[Python-checkins] cpython (merge 3.5 -> default): Issue #23934: Fix inspect.signature to fail correctly for builtin types.
yury.selivanov
python-checkins at python.org
Sat May 30 23:09:31 CEST 2015
https://hg.python.org/cpython/rev/19e0ffdd1daa
changeset: 96408:19e0ffdd1daa
parent: 96406:4a6d49e69a3a
parent: 96407:e59966bb6de5
user: Yury Selivanov <yselivanov at sprymix.com>
date: Sat May 30 17:09:15 2015 -0400
summary:
Issue #23934: Fix inspect.signature to fail correctly for builtin types.
Initial patch by James Powell. (Merge 3.5)
files:
Lib/inspect.py | 6 +++++-
Lib/test/test_inspect.py | 7 ++++++-
Misc/NEWS | 3 +++
3 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/Lib/inspect.py b/Lib/inspect.py
--- a/Lib/inspect.py
+++ b/Lib/inspect.py
@@ -2255,9 +2255,13 @@
if type not in obj.__mro__:
# We have a class (not metaclass), but no user-defined
# __init__ or __new__ for it
- if obj.__init__ is object.__init__:
+ if (obj.__init__ is object.__init__ and
+ obj.__new__ is object.__new__):
# Return a signature of 'object' builtin.
return signature(object)
+ else:
+ raise ValueError(
+ 'no signature found for builtin type {!r}'.format(obj))
elif not isinstance(obj, _NonUserDefinedCallables):
# An object with __call__
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
@@ -1980,9 +1980,14 @@
@cpython_only
def test_signature_on_builtins_no_signature(self):
import _testcapi
- with self.assertRaisesRegex(ValueError, 'no signature found for builtin'):
+ with self.assertRaisesRegex(ValueError,
+ 'no signature found for builtin'):
inspect.signature(_testcapi.docstring_no_signature)
+ with self.assertRaisesRegex(ValueError,
+ 'no signature found for builtin'):
+ inspect.signature(str)
+
def test_signature_on_non_function(self):
with self.assertRaisesRegex(TypeError, 'is not a callable object'):
inspect.signature(42)
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -43,6 +43,9 @@
- Issue #16991: Add a C implementation of OrderedDict.
+- Issue #23934: Fix inspect.signature to fail correctly for builtin types
+ lacking signature information. Initial patch by James Powell.
+
What's New in Python 3.5.0 beta 1?
==================================
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list