Issue 22547: Implement informative __repr__ for inspect.BoundArguments
This commit is contained in:
parent
6b4046f062
commit
3f6538fed0
|
@ -2460,6 +2460,13 @@ class BoundArguments:
|
|||
def __getstate__(self):
|
||||
return {'_signature': self._signature, 'arguments': self.arguments}
|
||||
|
||||
def __repr__(self):
|
||||
args = []
|
||||
for arg, value in self.arguments.items():
|
||||
args.append('{}={!r}'.format(arg, value))
|
||||
return '<{} at {:#x} ({})>'.format(self.__class__.__name__,
|
||||
id(self), ', '.join(args))
|
||||
|
||||
|
||||
class Signature:
|
||||
"""A Signature object represents the overall signature of a function.
|
||||
|
|
|
@ -3149,6 +3149,13 @@ class TestBoundArguments(unittest.TestCase):
|
|||
ba_pickled = pickle.loads(pickle.dumps(ba, ver))
|
||||
self.assertEqual(ba, ba_pickled)
|
||||
|
||||
def test_signature_bound_arguments_repr(self):
|
||||
def foo(a, b, *, c:1={}, **kw) -> {42:'ham'}: pass
|
||||
sig = inspect.signature(foo)
|
||||
ba = sig.bind(20, 30, z={})
|
||||
self.assertRegex(repr(ba),
|
||||
r'<BoundArguments at 0x[a-fA-F0-9]+ \(a=20,.*\}\}\)>')
|
||||
|
||||
|
||||
class TestSignaturePrivateHelpers(unittest.TestCase):
|
||||
def test_signature_get_bound_param(self):
|
||||
|
|
Loading…
Reference in New Issue