]> granicus.if.org Git - python/commitdiff
inspect.signature: Improve repr of Signature and Parameter. Closes #20378
authorYury Selivanov <yselivanov@sprymix.com>
Thu, 27 Mar 2014 16:41:53 +0000 (12:41 -0400)
committerYury Selivanov <yselivanov@sprymix.com>
Thu, 27 Mar 2014 16:41:53 +0000 (12:41 -0400)
Lib/inspect.py
Lib/test/test_inspect.py
Misc/NEWS

index acb80714ffadc9223cf713574fd7761df44e7890..05d67fce54e2c3433b5b61a8d241bccc351e2d68 100644 (file)
@@ -2192,8 +2192,8 @@ class Parameter:
         return formatted
 
     def __repr__(self):
-        return '<{} at {:#x} {!r}>'.format(self.__class__.__name__,
-                                           id(self), self.name)
+        return '<{} at {:#x} "{}">'.format(self.__class__.__name__,
+                                           id(self), self)
 
     def __eq__(self, other):
         # NB: We deliberately do not compare '_partial_kwarg' attributes
@@ -2698,6 +2698,10 @@ class Signature:
     def __setstate__(self, state):
         self._return_annotation = state['_return_annotation']
 
+    def __repr__(self):
+        return '<{} at {:#x} "{}">'.format(self.__class__.__name__,
+                                           id(self), self)
+
     def __str__(self):
         result = []
         render_pos_only_separator = False
index 5bdd327903d798016d5e5946d0ad2572dd3ece82..95b88779f98c57ec423daa48105d98e4db2f30f3 100644 (file)
@@ -1667,6 +1667,9 @@ class TestSignatureObject(unittest.TestCase):
         with self.assertRaisesRegex(ValueError, 'follows default argument'):
             S((pkd, pk))
 
+        self.assertTrue(repr(sig).startswith('<Signature'))
+        self.assertTrue('"(po, pk' in repr(sig))
+
     def test_signature_object_pickle(self):
         def foo(a, b, *, c:1={}, **kw) -> {42:'ham'}: pass
         foo_partial = functools.partial(foo, a=1)
@@ -2575,6 +2578,7 @@ class TestParameterObject(unittest.TestCase):
             p.replace(kind=inspect.Parameter.VAR_POSITIONAL)
 
         self.assertTrue(repr(p).startswith('<Parameter'))
+        self.assertTrue('"a=42"' in repr(p))
 
     def test_signature_parameter_equality(self):
         P = inspect.Parameter
index a4a42a8958b568fe2a44273d3d3bf6ea23136b45..c8384f9df371b2c7302b7431394484803c40d7bd 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -111,6 +111,8 @@ Library
 
 - Issue #17373: Add inspect.Signature.from_callable method.
 
+- Issue #20378: Improve repr of inspect.Signature and inspect.Parameter.
+
 Documentation
 -------------