[Python-checkins] cpython: inspect: Fix getfullargspec to support builtin module-level functions. Issue
yury.selivanov
python-checkins at python.org
Fri Feb 21 07:34:53 CET 2014
http://hg.python.org/cpython/rev/2000c27ebe80
changeset: 89314:2000c27ebe80
user: Yury Selivanov <yselivanov at sprymix.com>
date: Fri Feb 21 01:32:42 2014 -0500
summary:
inspect: Fix getfullargspec to support builtin module-level functions. Issue #20711
files:
Lib/inspect.py | 11 +++++++++--
Lib/test/test_inspect.py | 7 +++++++
2 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/Lib/inspect.py b/Lib/inspect.py
--- a/Lib/inspect.py
+++ b/Lib/inspect.py
@@ -1827,9 +1827,16 @@
p(f.args.kwarg, empty)
if self_parameter is not None:
+ # Possibly strip the bound argument:
+ # - We *always* strip first bound argument if
+ # it is a module.
+ # - We don't strip first bound argument if
+ # skip_bound_arg is False.
assert parameters
- if getattr(obj, '__self__', None) and skip_bound_arg:
- # strip off self, it's already been bound
+ _self = getattr(obj, '__self__', None)
+ self_isbound = _self is not None
+ self_ismodule = ismodule(_self)
+ if self_isbound and (self_ismodule or skip_bound_arg):
parameters.pop(0)
else:
# for builtins, self parameter is always positional-only!
diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py
--- a/Lib/test/test_inspect.py
+++ b/Lib/test/test_inspect.py
@@ -643,6 +643,13 @@
self.assertFullArgSpecEquals(_pickle.Pickler(io.BytesIO()).dump,
args_e=['self', 'obj'], formatted='(self, obj)')
+ self.assertFullArgSpecEquals(
+ os.stat,
+ args_e=['path'],
+ kwonlyargs_e=['dir_fd', 'follow_symlinks'],
+ kwonlydefaults_e={'dir_fd': None, 'follow_symlinks': True},
+ formatted='(path, *, dir_fd=None, follow_symlinks=True)')
+
@cpython_only
@unittest.skipIf(MISSING_C_DOCSTRINGS,
"Signature information for builtins requires docstrings")
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list