Commit bf304fcb authored by Yury Selivanov's avatar Yury Selivanov

Issue #23934: Fix inspect.signature to fail correctly for builtin types.

Initial patch by James Powell.
parent dce09c34
......@@ -2255,9 +2255,13 @@ def _signature_from_callable(obj, *,
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__
......
......@@ -1980,9 +1980,14 @@ class TestSignatureObject(unittest.TestCase):
@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)
......
......@@ -31,6 +31,9 @@ Library
- 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?
==================================
......
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