]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Issue #26634: recursive_repr() now sets __qualname__ of wrapper.
authorSerhiy Storchaka <storchaka@gmail.com>
Tue, 26 Apr 2016 06:30:44 +0000 (09:30 +0300)
committerSerhiy Storchaka <storchaka@gmail.com>
Tue, 26 Apr 2016 06:30:44 +0000 (09:30 +0300)
Patch by Xiang Zhang.

Lib/reprlib.py
Lib/test/test_reprlib.py
Misc/NEWS

index ecbd2cc47228b90fbb0e00f6a9e968d86c1cbee6..40d991fa3648eaf9ba2614eb03b5bfadb4446956 100644 (file)
@@ -30,6 +30,7 @@ def recursive_repr(fillvalue='...'):
         wrapper.__module__ = getattr(user_function, '__module__')
         wrapper.__doc__ = getattr(user_function, '__doc__')
         wrapper.__name__ = getattr(user_function, '__name__')
+        wrapper.__qualname__ = getattr(user_function, '__qualname__')
         wrapper.__annotations__ = getattr(user_function, '__annotations__', {})
         return wrapper
 
index a51c4d7523f633ac2aa9a755cb1d058dd54279e1..4bf91945ea4f4ae3ea8c31ec07a35ca97fcd16c1 100644 (file)
@@ -374,6 +374,13 @@ class MyContainer2(MyContainer):
     def __repr__(self):
         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):
     def test_recursive_repr(self):
         m = MyContainer(list('abcde'))
@@ -387,5 +394,12 @@ class TestRecursiveRepr(unittest.TestCase):
         m.append(m)
         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__":
     unittest.main()
index 6e9ed109d234251df600600f084882f895a720a9..e887e9052f93b4be431bb4b9cd7d3270724852d6 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -107,6 +107,9 @@ Core and Builtins
 Library
 -------
 
+- Issue #26634: recursive_repr() now sets __qualname__ of wrapper.  Patch by
+  Xiang Zhang.
+
 - Issue #26804: urllib.request will prefer lower_case proxy environment
   variables over UPPER_CASE or Mixed_Case ones. Patch contributed by Hans-Peter
   Jansen.