summaryrefslogtreecommitdiffstats
path: root/Lib/inspect.py
diff options
context:
space:
mode:
authorNick Coghlan <ncoghlan@gmail.com>2016-12-02 10:29:57 (GMT)
committerNick Coghlan <ncoghlan@gmail.com>2016-12-02 10:29:57 (GMT)
commit3c35fdb8fbf72c750ab19036b6145751ccbec856 (patch)
tree7986833389f5aa0d803d30f11cf1c651abc480f6 /Lib/inspect.py
parentc2c8fe1252dda7dd973a1da440607a1d9a9638f0 (diff)
downloadcpython-3c35fdb8fbf72c750ab19036b6145751ccbec856.zip
cpython-3c35fdb8fbf72c750ab19036b6145751ccbec856.tar.gz
cpython-3c35fdb8fbf72c750ab19036b6145751ccbec856.tar.bz2
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.
Diffstat (limited to 'Lib/inspect.py')
-rw-r--r--Lib/inspect.py42
1 files changed, 25 insertions, 17 deletions
diff --git a/Lib/inspect.py b/Lib/inspect.py
index 6640375..e08e9f5 100644
--- a/Lib/inspect.py
+++ b/Lib/inspect.py
@@ -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: