gh-118404: Fix inspect.signature() for non-comparable callables (GH-118405)
This commit is contained in:
parent
5b05d452cd
commit
11f8348d78
@ -2179,8 +2179,10 @@ def _signature_is_builtin(obj):
|
||||
ismethoddescriptor(obj) or
|
||||
isinstance(obj, _NonUserDefinedCallables) or
|
||||
# Can't test 'isinstance(type)' here, as it would
|
||||
# also be True for regular python classes
|
||||
obj in (type, object))
|
||||
# also be True for regular python classes.
|
||||
# Can't use the `in` operator here, as it would
|
||||
# invoke the custom __eq__ method.
|
||||
obj is type or obj is object)
|
||||
|
||||
|
||||
def _signature_is_functionlike(obj):
|
||||
|
@ -4690,6 +4690,16 @@ class TestSignatureObject(unittest.TestCase):
|
||||
|
||||
self.assertEqual(inspect.signature(D2), inspect.signature(D1))
|
||||
|
||||
def test_signature_on_non_comparable(self):
|
||||
class NoncomparableCallable:
|
||||
def __call__(self, a):
|
||||
pass
|
||||
def __eq__(self, other):
|
||||
1/0
|
||||
self.assertEqual(self.signature(NoncomparableCallable()),
|
||||
((('a', ..., ..., 'positional_or_keyword'),),
|
||||
...))
|
||||
|
||||
|
||||
class TestParameterObject(unittest.TestCase):
|
||||
def test_signature_parameter_kinds(self):
|
||||
|
@ -0,0 +1 @@
|
||||
Fix :func:`inspect.signature` for non-comparable callables.
|
Loading…
x
Reference in New Issue
Block a user