Issue #26634: recursive_repr() now sets __qualname__ of wrapper.
Patch by Xiang Zhang.
This commit is contained in:
commit
cd9b5c2f40
|
@ -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):
|
||||||
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):
|
||||||
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
|
||||||
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.
|
||||||
|
|
Loading…
Reference in New Issue