Skip to content

Commit

Permalink
Factorize _update_args_kwargs logic in Parser
Browse files Browse the repository at this point in the history
  • Loading branch information
lafrech committed Feb 25, 2020
1 parent da9f4fc commit ba59660
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 20 deletions.
16 changes: 6 additions & 10 deletions src/webargs/asyncparser.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,11 +147,9 @@ async def wrapper(*args, **kwargs):
error_status_code=error_status_code,
error_headers=error_headers,
)
if as_kwargs:
kwargs.update(parsed_args)
else:
# Add parsed_args after other positional arguments
args += (parsed_args,)
args, kwargs = self._update_args_kwargs(
args, kwargs, parsed_args, as_kwargs
)
return await func(*args, **kwargs)

else:
Expand All @@ -171,11 +169,9 @@ def wrapper(*args, **kwargs):
error_status_code=error_status_code,
error_headers=error_headers,
)
if as_kwargs:
kwargs.update(parsed_args)
else:
# Add parsed_args after other positional arguments
args += (parsed_args,)
args, kwargs = self._update_args_kwargs(
args, kwargs, parsed_args, as_kwargs
)
return func(*args, **kwargs)

return wrapper
Expand Down
18 changes: 13 additions & 5 deletions src/webargs/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,16 @@ def get_request_from_view_args(self, view, args, kwargs):
"""
return None

@staticmethod
def _update_args_kwargs(args, kwargs, parsed_args, as_kwargs):
"""Update args or kwargs with parsed_args depending on as_kwargs"""
if as_kwargs:
kwargs.update(parsed_args)
else:
# Add parsed_args after other positional arguments
args += (parsed_args,)
return args, kwargs

def use_args(
self,
argmap,
Expand Down Expand Up @@ -349,11 +359,9 @@ def wrapper(*args, **kwargs):
error_status_code=error_status_code,
error_headers=error_headers,
)
if as_kwargs:
kwargs.update(parsed_args)
else:
# Add parsed_args after other positional arguments
args += (parsed_args,)
args, kwargs = self._update_args_kwargs(
args, kwargs, parsed_args, as_kwargs
)
return func(*args, **kwargs)

wrapper.__wrapped__ = func
Expand Down
8 changes: 3 additions & 5 deletions src/webargs/pyramidparser.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,11 +159,9 @@ def wrapper(obj, *args, **kwargs):
error_status_code=error_status_code,
error_headers=error_headers,
)
if as_kwargs:
kwargs.update(parsed_args)
else:
# Add parsed_args after other positional arguments
args += (parsed_args,)
args, kwargs = self._update_args_kwargs(
args, kwargs, parsed_args, as_kwargs
)
return func(obj, *args, **kwargs)

wrapper.__wrapped__ = func
Expand Down

0 comments on commit ba59660

Please sign in to comment.