bpo-34706: Preserve subclassing in inspect.Signature.from_callable (GH-16108)
https://bugs.python.org/issue34706
Specifically in the case of a class that does not override its
constructor signature inherited from object.
These are Buck Evan @bukzor's changes cherrypicked from GH-9344.
diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py
index 6c9f529..7148dfa 100644
--- a/Lib/test/test_inspect.py
+++ b/Lib/test/test_inspect.py
@@ -3153,14 +3153,21 @@
class MySignature(inspect.Signature): pass
def foo(a, *, b:1): pass
foo_sig = MySignature.from_callable(foo)
- self.assertTrue(isinstance(foo_sig, MySignature))
+ self.assertIsInstance(foo_sig, MySignature)
+
+ def test_signature_from_callable_class(self):
+ # A regression test for a class inheriting its signature from `object`.
+ class MySignature(inspect.Signature): pass
+ class foo: pass
+ foo_sig = MySignature.from_callable(foo)
+ self.assertIsInstance(foo_sig, MySignature)
@unittest.skipIf(MISSING_C_DOCSTRINGS,
"Signature information for builtins requires docstrings")
def test_signature_from_callable_builtin_obj(self):
class MySignature(inspect.Signature): pass
sig = MySignature.from_callable(_pickle.Pickler)
- self.assertTrue(isinstance(sig, MySignature))
+ self.assertIsInstance(sig, MySignature)
def test_signature_definition_order_preserved_on_kwonly(self):
for fn in signatures_with_lexicographic_keyword_only_parameters():