[Python-checkins] r43367 - in python/trunk/Lib: contextlib.py test/test_contextlib.py

phillip.eby python-checkins at python.org
Tue Mar 28 02:07:24 CEST 2006


Author: phillip.eby
Date: Tue Mar 28 02:07:24 2006
New Revision: 43367

Modified:
   python/trunk/Lib/contextlib.py
   python/trunk/Lib/test/test_contextlib.py
Log:
Fix contextlib not copying function attributes


Modified: python/trunk/Lib/contextlib.py
==============================================================================
--- python/trunk/Lib/contextlib.py	(original)
+++ python/trunk/Lib/contextlib.py	Tue Mar 28 02:07:24 2006
@@ -78,6 +78,7 @@
     try:
         helper.__name__ = func.__name__
         helper.__doc__ = func.__doc__
+        helper.__dict__ = func.__dict__
     except:
         pass
     return helper

Modified: python/trunk/Lib/test/test_contextlib.py
==============================================================================
--- python/trunk/Lib/test/test_contextlib.py	(original)
+++ python/trunk/Lib/test/test_contextlib.py	Tue Mar 28 02:07:24 2006
@@ -84,6 +84,21 @@
             raise ZeroDivisionError(999)
         self.assertEqual(state, [1, 42, 999])
 
+    def test_contextmanager_attribs(self):
+        def attribs(**kw):
+            def decorate(func):
+                for k,v in kw.items():
+                    setattr(func,k,v)
+                return func
+            return decorate
+        @contextmanager
+        @attribs(foo='bar')
+        def baz(spam):
+            """Whee!"""
+        self.assertEqual(baz.__name__,'baz')
+        self.assertEqual(baz.foo, 'bar')
+        self.assertEqual(baz.__doc__, "Whee!")
+
 class NestedTestCase(unittest.TestCase):
 
     # XXX This needs more work


More information about the Python-checkins mailing list