Issue 22547: Implement informative __repr__ for inspect.BoundArguments

This commit is contained in:
Yury Selivanov 2015-05-14 18:47:17 -04:00
parent 6b4046f062
commit 3f6538fed0
3 changed files with 17 additions and 0 deletions

View File

@ -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.

View File

@ -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):

View File

@ -125,6 +125,9 @@ Library
- Issue 24184: Add AsyncIterator and AsyncIterable ABCs to
collections.abc. Contributed by Yury Selivanov.
- Issue 22547: Implement informative __repr__ for inspect.BoundArguments.
Contributed by Yury Selivanov.
Tests
-----