Commit c1c4bf85 authored by Georg Brandl's avatar Georg Brandl

#9683: remove broken dead code dealing with nested arguments removed from...

#9683: remove broken dead code dealing with nested arguments removed from Py3k, and update the docs and docstrings accordingly.
parent f74cf77c
...@@ -422,19 +422,19 @@ Classes and functions ...@@ -422,19 +422,19 @@ Classes and functions
Get information about arguments passed into a particular frame. A Get information about arguments passed into a particular frame. A
:term:`named tuple` ``ArgInfo(args, varargs, keywords, locals)`` is :term:`named tuple` ``ArgInfo(args, varargs, keywords, locals)`` is
returned. *args* is a list of the argument names (it may contain nested returned. *args* is a list of the argument names. *varargs* and *varkw* are
lists). *varargs* and *varkw* are the names of the ``*`` and ``**`` arguments the names of the ``*`` and ``**`` arguments or ``None``. *locals* is the
or ``None``. *locals* is the locals dictionary of the given frame. locals dictionary of the given frame.
.. function:: formatargspec(args[, varargs, varkw, defaults, formatarg, formatvarargs, formatvarkw, formatvalue, join]) .. function:: formatargspec(args[, varargs, varkw, defaults, formatarg, formatvarargs, formatvarkw, formatvalue])
Format a pretty argument spec from the four values returned by Format a pretty argument spec from the four values returned by
:func:`getargspec`. The format\* arguments are the corresponding optional :func:`getargspec`. The format\* arguments are the corresponding optional
formatting functions that are called to turn names and values into strings. formatting functions that are called to turn names and values into strings.
.. function:: formatargvalues(args[, varargs, varkw, locals, formatarg, formatvarargs, formatvarkw, formatvalue, join]) .. function:: formatargvalues(args[, varargs, varkw, locals, formatarg, formatvarargs, formatvarkw, formatvalue])
Format a pretty argument spec from the four values returned by Format a pretty argument spec from the four values returned by
:func:`getargvalues`. The format\* arguments are the corresponding optional :func:`getargvalues`. The format\* arguments are the corresponding optional
......
...@@ -749,9 +749,9 @@ def getargs(co): ...@@ -749,9 +749,9 @@ def getargs(co):
"""Get information about the arguments accepted by a code object. """Get information about the arguments accepted by a code object.
Three things are returned: (args, varargs, varkw), where Three things are returned: (args, varargs, varkw), where
'args' is the list of argument names, possibly containing nested 'args' is the list of argument names. Keyword-only arguments are
lists. Keyword-only arguments are appended. 'varargs' and 'varkw' appended. 'varargs' and 'varkw' are the names of the * and **
are the names of the * and ** arguments or None.""" arguments or None."""
args, varargs, kwonlyargs, varkw = _getfullargs(co) args, varargs, kwonlyargs, varkw = _getfullargs(co)
return Arguments(args + kwonlyargs, varargs, varkw) return Arguments(args + kwonlyargs, varargs, varkw)
...@@ -759,9 +759,8 @@ def _getfullargs(co): ...@@ -759,9 +759,8 @@ def _getfullargs(co):
"""Get information about the arguments accepted by a code object. """Get information about the arguments accepted by a code object.
Four things are returned: (args, varargs, kwonlyargs, varkw), where Four things are returned: (args, varargs, kwonlyargs, varkw), where
'args' and 'kwonlyargs' are lists of argument names (with 'args' 'args' and 'kwonlyargs' are lists of argument names, and 'varargs'
possibly containing nested lists), and 'varargs' and 'varkw' are the and 'varkw' are the names of the * and ** arguments or None."""
names of the * and ** arguments or None."""
if not iscode(co): if not iscode(co):
raise TypeError('{!r} is not a code object'.format(co)) raise TypeError('{!r} is not a code object'.format(co))
...@@ -790,7 +789,7 @@ def getargspec(func): ...@@ -790,7 +789,7 @@ def getargspec(func):
"""Get the names and default values of a function's arguments. """Get the names and default values of a function's arguments.
A tuple of four things is returned: (args, varargs, varkw, defaults). A tuple of four things is returned: (args, varargs, varkw, defaults).
'args' is a list of the argument names (it may contain nested lists). 'args' is a list of the argument names.
'args' will include keyword-only argument names. 'args' will include keyword-only argument names.
'varargs' and 'varkw' are the names of the * and ** arguments or None. '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. 'defaults' is an n-tuple of the default values of the last n arguments.
...@@ -815,7 +814,7 @@ def getfullargspec(func): ...@@ -815,7 +814,7 @@ def getfullargspec(func):
A tuple of seven things is returned: A tuple of seven things is returned:
(args, varargs, varkw, defaults, kwonlyargs, kwonlydefaults annotations). (args, varargs, varkw, defaults, kwonlyargs, kwonlydefaults annotations).
'args' is a list of the argument names (it may contain nested lists). 'args' is a list of the argument names.
'varargs' and 'varkw' are the names of the * and ** arguments or None. '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. 'defaults' is an n-tuple of the default values of the last n arguments.
'kwonlyargs' is a list of keyword-only argument names. 'kwonlyargs' is a list of keyword-only argument names.
...@@ -839,25 +838,12 @@ def getargvalues(frame): ...@@ -839,25 +838,12 @@ def getargvalues(frame):
"""Get information about arguments passed into a particular frame. """Get information about arguments passed into a particular frame.
A tuple of four things is returned: (args, varargs, varkw, locals). A tuple of four things is returned: (args, varargs, varkw, locals).
'args' is a list of the argument names (it may contain nested lists). 'args' is a list of the argument names.
'varargs' and 'varkw' are the names of the * and ** arguments or None. 'varargs' and 'varkw' are the names of the * and ** arguments or None.
'locals' is the locals dictionary of the given frame.""" 'locals' is the locals dictionary of the given frame."""
args, varargs, varkw = getargs(frame.f_code) args, varargs, varkw = getargs(frame.f_code)
return ArgInfo(args, varargs, varkw, frame.f_locals) return ArgInfo(args, varargs, varkw, frame.f_locals)
def joinseq(seq):
if len(seq) == 1:
return '(' + seq[0] + ',)'
else:
return '(' + ', '.join(seq) + ')'
def strseq(object, convert, join=joinseq):
"""Recursively walk a sequence, stringifying each element."""
if type(object) in (list, tuple):
return join(map(lambda o, c=convert, j=join: strseq(o, c, j), object))
else:
return convert(object)
def formatannotation(annotation, base_module=None): def formatannotation(annotation, base_module=None):
if isinstance(annotation, type): if isinstance(annotation, type):
if annotation.__module__ in ('builtins', base_module): if annotation.__module__ in ('builtins', base_module):
...@@ -878,8 +864,7 @@ def formatargspec(args, varargs=None, varkw=None, defaults=None, ...@@ -878,8 +864,7 @@ def formatargspec(args, varargs=None, varkw=None, defaults=None,
formatvarkw=lambda name: '**' + name, formatvarkw=lambda name: '**' + name,
formatvalue=lambda value: '=' + repr(value), formatvalue=lambda value: '=' + repr(value),
formatreturns=lambda text: ' -> ' + text, formatreturns=lambda text: ' -> ' + text,
formatannotation=formatannotation, formatannotation=formatannotation):
join=joinseq):
"""Format an argument spec from the values returned by getargspec """Format an argument spec from the values returned by getargspec
or getfullargspec. or getfullargspec.
...@@ -897,7 +882,7 @@ def formatargspec(args, varargs=None, varkw=None, defaults=None, ...@@ -897,7 +882,7 @@ def formatargspec(args, varargs=None, varkw=None, defaults=None,
if defaults: if defaults:
firstdefault = len(args) - len(defaults) firstdefault = len(args) - len(defaults)
for i, arg in enumerate(args): for i, arg in enumerate(args):
spec = strseq(arg, formatargandannotation, join) spec = formatargandannotation(arg)
if defaults and i >= firstdefault: if defaults and i >= firstdefault:
spec = spec + formatvalue(defaults[i - firstdefault]) spec = spec + formatvalue(defaults[i - firstdefault])
specs.append(spec) specs.append(spec)
...@@ -923,8 +908,7 @@ def formatargvalues(args, varargs, varkw, locals, ...@@ -923,8 +908,7 @@ def formatargvalues(args, varargs, varkw, locals,
formatarg=str, formatarg=str,
formatvarargs=lambda name: '*' + name, formatvarargs=lambda name: '*' + name,
formatvarkw=lambda name: '**' + name, formatvarkw=lambda name: '**' + name,
formatvalue=lambda value: '=' + repr(value), formatvalue=lambda value: '=' + repr(value)):
join=joinseq):
"""Format an argument spec from the 4 values returned by getargvalues. """Format an argument spec from the 4 values returned by getargvalues.
The first four arguments are (args, varargs, varkw, locals). The The first four arguments are (args, varargs, varkw, locals). The
...@@ -936,7 +920,7 @@ def formatargvalues(args, varargs, varkw, locals, ...@@ -936,7 +920,7 @@ def formatargvalues(args, varargs, varkw, locals,
return formatarg(name) + formatvalue(locals[name]) return formatarg(name) + formatvalue(locals[name])
specs = [] specs = []
for i in range(len(args)): for i in range(len(args)):
specs.append(strseq(args[i], convert, join)) specs.append(convert(args[i]))
if varargs: if varargs:
specs.append(formatvarargs(varargs) + formatvalue(locals[varargs])) specs.append(formatvarargs(varargs) + formatvalue(locals[varargs]))
if varkw: if varkw:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment