[Python-checkins] cpython (3.5): Issue #26634: recursive_repr() now sets __qualname__ of wrapper.

serhiy.storchaka python-checkins at python.org
Tue Apr 26 02:31:36 EDT 2016


https://hg.python.org/cpython/rev/1f0369547b0e
changeset: 101147:1f0369547b0e
branch: 3.5
parent: 101140:49b975122022
user: Serhiy Storchaka <storchaka at gmail.com>
date: Tue Apr 26 09:30:44 2016 +0300
summary:
 Issue #26634: recursive_repr() now sets __qualname__ of wrapper.
Patch by Xiang Zhang.
files:
 Lib/reprlib.py | 1 +
 Lib/test/test_reprlib.py | 14 ++++++++++++++
 Misc/NEWS | 3 +++
 3 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/Lib/reprlib.py b/Lib/reprlib.py
--- a/Lib/reprlib.py
+++ b/Lib/reprlib.py
@@ -30,6 +30,7 @@
 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
 
diff --git a/Lib/test/test_reprlib.py b/Lib/test/test_reprlib.py
--- a/Lib/test/test_reprlib.py
+++ b/Lib/test/test_reprlib.py
@@ -374,6 +374,13 @@
 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 @@
 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()
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -107,6 +107,9 @@
 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.
-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /