mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
Issue 22547: Implement informative __repr__ for inspect.BoundArguments
This commit is contained in:
parent
6b4046f062
commit
3f6538fed0
3 changed files with 17 additions and 0 deletions
|
@ -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):
|
||||
|
|
|
@ -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
|
||||
-----
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue