mirror of
https://github.com/python/cpython.git
synced 2025-10-05 06:31:48 +00:00
This commit is contained in:
parent
cf58dfb44c
commit
e45ea377b8
3 changed files with 48 additions and 4 deletions
|
@ -2241,11 +2241,16 @@ def _signature_from_callable(obj, *,
|
|||
sigcls=sigcls)
|
||||
|
||||
sig = _signature_get_partial(wrapped_sig, partialmethod, (None,))
|
||||
|
||||
first_wrapped_param = tuple(wrapped_sig.parameters.values())[0]
|
||||
new_params = (first_wrapped_param,) + tuple(sig.parameters.values())
|
||||
|
||||
return sig.replace(parameters=new_params)
|
||||
if first_wrapped_param.kind is Parameter.VAR_POSITIONAL:
|
||||
# First argument of the wrapped callable is `*args`, as in
|
||||
# `partialmethod(lambda *args)`.
|
||||
return sig
|
||||
else:
|
||||
sig_params = tuple(sig.parameters.values())
|
||||
assert first_wrapped_param is not sig_params[0]
|
||||
new_params = (first_wrapped_param,) + sig_params
|
||||
return sig.replace(parameters=new_params)
|
||||
|
||||
if isfunction(obj) or _signature_is_functionlike(obj):
|
||||
# If it's a pure Python function, or an object that is duck type
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue