Skip to content

Commit 2327ca6

Browse files
committed
Accept body in _rewrite_parameters
1 parent 43d53b5 commit 2327ca6

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
lines changed

elasticsearch/_async/helpers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,7 @@ def normalize_from_keyword(kw: MutableMapping[str, Any]) -> None:
445445
search_kwargs = kwargs.copy()
446446
search_kwargs["scroll"] = scroll
447447
search_kwargs["size"] = size
448-
resp = await client.search(body=query, **search_kwargs) # type: ignore[call-arg]
448+
resp = await client.search(body=query, **search_kwargs)
449449

450450
scroll_id: Optional[str] = resp.get("_scroll_id")
451451
scroll_transport_kwargs = pop_transport_kwargs(scroll_kwargs)

elasticsearch/_sync/client/utils.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,9 +294,23 @@ def _merge_kwargs_no_duplicates(kwargs: Dict[str, Any], values: Dict[str, Any])
294294
kwargs[key] = val
295295

296296

297+
def _merge_body_fields_no_duplicates(
298+
body: Dict[str, Any], kwargs: Dict[str, Any], body_fields: Tuple[str, ...]
299+
) -> None:
300+
for key in list(kwargs.keys()):
301+
if key in body:
302+
raise ValueError(
303+
f"Received multiple values for '{key}', specify parameters "
304+
"directly instead of using 'body' or 'params'"
305+
)
306+
if key in body_fields:
307+
# deprecate this
308+
body[key] = kwargs.pop(key)
309+
310+
297311
def _rewrite_parameters(
298312
body_name: Optional[str] = None,
299-
body_fields: bool = False,
313+
body_fields: Optional[Tuple[str, ...]] = None,
300314
parameter_aliases: Optional[Dict[str, str]] = None,
301315
ignore_deprecated_options: Optional[Set[str]] = None,
302316
) -> Callable[[F], F]:
@@ -390,7 +404,8 @@ def wrapped(*args: Any, **kwargs: Any) -> Any:
390404
"Couldn't merge 'body' with other parameters as it wasn't a mapping. "
391405
"Instead of using 'body' use individual API parameters"
392406
)
393-
_merge_kwargs_no_duplicates(kwargs, body)
407+
_merge_body_fields_no_duplicates(body, kwargs, body_fields)
408+
kwargs["body"] = body
394409

395410
if parameter_aliases:
396411
for alias, rename_to in parameter_aliases.items():

elasticsearch/helpers/actions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -714,7 +714,7 @@ def normalize_from_keyword(kw: MutableMapping[str, Any]) -> None:
714714
search_kwargs = kwargs.copy()
715715
search_kwargs["scroll"] = scroll
716716
search_kwargs["size"] = size
717-
resp = client.search(body=query, **search_kwargs) # type: ignore[call-arg]
717+
resp = client.search(body=query, **search_kwargs)
718718

719719
scroll_id = resp.get("_scroll_id")
720720
scroll_transport_kwargs = pop_transport_kwargs(scroll_kwargs)

0 commit comments

Comments
 (0)