gh-107409: set `__wrapped__` attribute in `reprlib.recursive_repr` (#107410)

Co-authored-by: Kumar Aditya <kumaraditya@python.org>
This commit is contained in:
denballakh 2023-08-10 11:55:49 +05:00 committed by GitHub
parent 0f2fb6efb4
commit 4845b9712f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 0 deletions

View File

@ -29,6 +29,7 @@ def recursive_repr(fillvalue='...'):
wrapper.__name__ = getattr(user_function, '__name__') wrapper.__name__ = getattr(user_function, '__name__')
wrapper.__qualname__ = getattr(user_function, '__qualname__') wrapper.__qualname__ = getattr(user_function, '__qualname__')
wrapper.__annotations__ = getattr(user_function, '__annotations__', {}) wrapper.__annotations__ = getattr(user_function, '__annotations__', {})
wrapper.__wrapped__ = user_function
return wrapper return wrapper
return decorating_function return decorating_function

View File

@ -765,5 +765,14 @@ class TestRecursiveRepr(unittest.TestCase):
for name in assigned: for name in assigned:
self.assertIs(getattr(wrapper, name), getattr(wrapped, name)) self.assertIs(getattr(wrapper, name), getattr(wrapped, name))
def test__wrapped__(self):
class X:
def __repr__(self):
return 'X()'
f = __repr__ # save reference to check it later
__repr__ = recursive_repr()(__repr__)
self.assertIs(X.f, X.__repr__.__wrapped__)
if __name__ == "__main__": if __name__ == "__main__":
unittest.main() unittest.main()

View File

@ -0,0 +1 @@
Set :attr:`!__wrapped__` attribute in :func:`reprlib.recursive_repr`.