Commit cd9b5c2f authored by Serhiy Storchaka's avatar Serhiy Storchaka

Issue #26634: recursive_repr() now sets __qualname__ of wrapper.

Patch by Xiang Zhang.
parents 144da4ec b3b366d8
...@@ -30,6 +30,7 @@ def recursive_repr(fillvalue='...'): ...@@ -30,6 +30,7 @@ def recursive_repr(fillvalue='...'):
wrapper.__module__ = getattr(user_function, '__module__') wrapper.__module__ = getattr(user_function, '__module__')
wrapper.__doc__ = getattr(user_function, '__doc__') wrapper.__doc__ = getattr(user_function, '__doc__')
wrapper.__name__ = getattr(user_function, '__name__') wrapper.__name__ = getattr(user_function, '__name__')
wrapper.__qualname__ = getattr(user_function, '__qualname__')
wrapper.__annotations__ = getattr(user_function, '__annotations__', {}) wrapper.__annotations__ = getattr(user_function, '__annotations__', {})
return wrapper return wrapper
......
...@@ -374,6 +374,13 @@ class MyContainer2(MyContainer): ...@@ -374,6 +374,13 @@ class MyContainer2(MyContainer):
def __repr__(self): def __repr__(self):
return '<' + ', '.join(map(str, self.values)) + '>' return '<' + ', '.join(map(str, self.values)) + '>'
class MyContainer3:
def __repr__(self):
'Test document content'
pass
wrapped = __repr__
wrapper = recursive_repr()(wrapped)
class TestRecursiveRepr(unittest.TestCase): class TestRecursiveRepr(unittest.TestCase):
def test_recursive_repr(self): def test_recursive_repr(self):
m = MyContainer(list('abcde')) m = MyContainer(list('abcde'))
...@@ -387,5 +394,12 @@ class TestRecursiveRepr(unittest.TestCase): ...@@ -387,5 +394,12 @@ class TestRecursiveRepr(unittest.TestCase):
m.append(m) m.append(m)
self.assertEqual(repr(m), '<a, b, c, d, e, +++, x, +++>') self.assertEqual(repr(m), '<a, b, c, d, e, +++, x, +++>')
def test_assigned_attributes(self):
from functools import WRAPPER_ASSIGNMENTS as assigned
wrapped = MyContainer3.wrapped
wrapper = MyContainer3.wrapper
for name in assigned:
self.assertIs(getattr(wrapper, name), getattr(wrapped, name))
if __name__ == "__main__": if __name__ == "__main__":
unittest.main() unittest.main()
...@@ -256,6 +256,9 @@ Core and Builtins ...@@ -256,6 +256,9 @@ Core and Builtins
Library Library
------- -------
- Issue #26634: recursive_repr() now sets __qualname__ of wrapper. Patch by
Xiang Zhang.
- Issue #26804: urllib.request will prefer lower_case proxy environment - Issue #26804: urllib.request will prefer lower_case proxy environment
variables over UPPER_CASE or Mixed_Case ones. Patch contributed by Hans-Peter variables over UPPER_CASE or Mixed_Case ones. Patch contributed by Hans-Peter
Jansen. Jansen.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment