mirror of
https://github.com/python/cpython.git
synced 2025-10-09 08:31:26 +00:00
Issue #27172: Undeprecate inspect.getfullargspec()
This is still useful for single source Python 2/3 code migrating away from inspect.getargspec(), but that wasn't clear with the documented deprecation in place.
This commit is contained in:
parent
c2c8fe1252
commit
3c35fdb8fb
4 changed files with 74 additions and 34 deletions
|
@ -1019,24 +1019,30 @@ def _getfullargs(co):
|
|||
ArgSpec = namedtuple('ArgSpec', 'args varargs keywords defaults')
|
||||
|
||||
def getargspec(func):
|
||||
"""Get the names and default values of a function's arguments.
|
||||
"""Get the names and default values of a function's parameters.
|
||||
|
||||
A tuple of four things is returned: (args, varargs, keywords, defaults).
|
||||
'args' is a list of the argument names, including keyword-only argument names.
|
||||
'varargs' and 'keywords' are the names of the * and ** arguments or None.
|
||||
'defaults' is an n-tuple of the default values of the last n arguments.
|
||||
'varargs' and 'keywords' are the names of the * and ** parameters or None.
|
||||
'defaults' is an n-tuple of the default values of the last n parameters.
|
||||
|
||||
Use the getfullargspec() API for Python 3 code, as annotations
|
||||
and keyword arguments are supported. getargspec() will raise ValueError
|
||||
if the func has either annotations or keyword arguments.
|
||||
This function is deprecated, as it does not support annotations or
|
||||
keyword-only parameters and will raise ValueError if either is present
|
||||
on the supplied callable.
|
||||
|
||||
For a more structured introspection API, use inspect.signature() instead.
|
||||
|
||||
Alternatively, use getfullargspec() for an API with a similar namedtuple
|
||||
based interface, but full support for annotations and keyword-only
|
||||
parameters.
|
||||
"""
|
||||
warnings.warn("inspect.getargspec() is deprecated, "
|
||||
"use inspect.signature() instead", DeprecationWarning,
|
||||
stacklevel=2)
|
||||
"use inspect.signature() or inspect.getfullargspec()",
|
||||
DeprecationWarning, stacklevel=2)
|
||||
args, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, ann = \
|
||||
getfullargspec(func)
|
||||
if kwonlyargs or ann:
|
||||
raise ValueError("Function has keyword-only arguments or annotations"
|
||||
raise ValueError("Function has keyword-only parameters or annotations"
|
||||
", use getfullargspec() API which can support them")
|
||||
return ArgSpec(args, varargs, varkw, defaults)
|
||||
|
||||
|
@ -1044,18 +1050,20 @@ FullArgSpec = namedtuple('FullArgSpec',
|
|||
'args, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, annotations')
|
||||
|
||||
def getfullargspec(func):
|
||||
"""Get the names and default values of a callable object's arguments.
|
||||
"""Get the names and default values of a callable object's parameters.
|
||||
|
||||
A tuple of seven things is returned:
|
||||
(args, varargs, varkw, defaults, kwonlyargs, kwonlydefaults annotations).
|
||||
'args' is a list of the argument names.
|
||||
'varargs' and 'varkw' are the names of the * and ** arguments or None.
|
||||
'defaults' is an n-tuple of the default values of the last n arguments.
|
||||
'kwonlyargs' is a list of keyword-only argument names.
|
||||
(args, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, annotations).
|
||||
'args' is a list of the parameter names.
|
||||
'varargs' and 'varkw' are the names of the * and ** parameters or None.
|
||||
'defaults' is an n-tuple of the default values of the last n parameters.
|
||||
'kwonlyargs' is a list of keyword-only parameter names.
|
||||
'kwonlydefaults' is a dictionary mapping names from kwonlyargs to defaults.
|
||||
'annotations' is a dictionary mapping argument names to annotations.
|
||||
'annotations' is a dictionary mapping parameter names to annotations.
|
||||
|
||||
This function is deprecated, use inspect.signature() instead.
|
||||
Notable differences from inspect.signature():
|
||||
- the "self" parameter is always reported, even for bound methods
|
||||
- wrapper chains defined by __wrapped__ *not* unwrapped automatically
|
||||
"""
|
||||
|
||||
try:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue