Skip to content

Commit ba59660

Browse files
committed
Factorize _update_args_kwargs logic in Parser
1 parent da9f4fc commit ba59660

File tree

3 files changed

+22
-20
lines changed

3 files changed

+22
-20
lines changed

src/webargs/asyncparser.py

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -147,11 +147,9 @@ async def wrapper(*args, **kwargs):
147147
error_status_code=error_status_code,
148148
error_headers=error_headers,
149149
)
150-
if as_kwargs:
151-
kwargs.update(parsed_args)
152-
else:
153-
# Add parsed_args after other positional arguments
154-
args += (parsed_args,)
150+
args, kwargs = self._update_args_kwargs(
151+
args, kwargs, parsed_args, as_kwargs
152+
)
155153
return await func(*args, **kwargs)
156154

157155
else:
@@ -171,11 +169,9 @@ def wrapper(*args, **kwargs):
171169
error_status_code=error_status_code,
172170
error_headers=error_headers,
173171
)
174-
if as_kwargs:
175-
kwargs.update(parsed_args)
176-
else:
177-
# Add parsed_args after other positional arguments
178-
args += (parsed_args,)
172+
args, kwargs = self._update_args_kwargs(
173+
args, kwargs, parsed_args, as_kwargs
174+
)
179175
return func(*args, **kwargs)
180176

181177
return wrapper

src/webargs/core.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,16 @@ def get_request_from_view_args(self, view, args, kwargs):
290290
"""
291291
return None
292292

293+
@staticmethod
294+
def _update_args_kwargs(args, kwargs, parsed_args, as_kwargs):
295+
"""Update args or kwargs with parsed_args depending on as_kwargs"""
296+
if as_kwargs:
297+
kwargs.update(parsed_args)
298+
else:
299+
# Add parsed_args after other positional arguments
300+
args += (parsed_args,)
301+
return args, kwargs
302+
293303
def use_args(
294304
self,
295305
argmap,
@@ -349,11 +359,9 @@ def wrapper(*args, **kwargs):
349359
error_status_code=error_status_code,
350360
error_headers=error_headers,
351361
)
352-
if as_kwargs:
353-
kwargs.update(parsed_args)
354-
else:
355-
# Add parsed_args after other positional arguments
356-
args += (parsed_args,)
362+
args, kwargs = self._update_args_kwargs(
363+
args, kwargs, parsed_args, as_kwargs
364+
)
357365
return func(*args, **kwargs)
358366

359367
wrapper.__wrapped__ = func

src/webargs/pyramidparser.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -159,11 +159,9 @@ def wrapper(obj, *args, **kwargs):
159159
error_status_code=error_status_code,
160160
error_headers=error_headers,
161161
)
162-
if as_kwargs:
163-
kwargs.update(parsed_args)
164-
else:
165-
# Add parsed_args after other positional arguments
166-
args += (parsed_args,)
162+
args, kwargs = self._update_args_kwargs(
163+
args, kwargs, parsed_args, as_kwargs
164+
)
167165
return func(obj, *args, **kwargs)
168166

169167
wrapper.__wrapped__ = func

0 commit comments

Comments
 (0)