diff -r 6cd736239b8a Lib/functools.py --- a/Lib/functools.py Sat Dec 10 21:25:04 2011 +0100 +++ b/Lib/functools.py Sat Dec 10 23:02:40 2011 +0100 @@ -21,7 +21,8 @@ # update_wrapper() and wraps() are tools to help write # wrapper functions that can handle naive introspection -WRAPPER_ASSIGNMENTS = ('__module__', '__name__', '__doc__', '__annotations__') +WRAPPER_ASSIGNMENTS = ('__module__', '__name__', '__doc__', '__annotations__', + '__qualname__') WRAPPER_UPDATES = ('__dict__',) def update_wrapper(wrapper, wrapped, diff -r 6cd736239b8a Lib/test/test_functools.py --- a/Lib/test/test_functools.py Sat Dec 10 21:25:04 2011 +0100 +++ b/Lib/test/test_functools.py Sat Dec 10 23:02:40 2011 +0100 @@ -226,6 +226,8 @@ self.check_wrapper(wrapper, f) self.assertIs(wrapper.__wrapped__, f) self.assertEqual(wrapper.__name__, 'f') + self.assertEqual(wrapper.__qualname__, + 'TestUpdateWrapper._default_update..f') self.assertEqual(wrapper.attr, 'This is also a test') self.assertEqual(wrapper.__annotations__['a'], 'This is a new annotation') self.assertNotIn('b', wrapper.__annotations__) @@ -246,6 +248,8 @@ functools.update_wrapper(wrapper, f, (), ()) self.check_wrapper(wrapper, f, (), ()) self.assertEqual(wrapper.__name__, 'wrapper') + self.assertEqual(wrapper.__qualname__, + 'TestUpdateWrapper.test_no_update..wrapper') self.assertEqual(wrapper.__doc__, None) self.assertEqual(wrapper.__annotations__, {}) self.assertFalse(hasattr(wrapper, 'attr')) @@ -263,6 +267,8 @@ functools.update_wrapper(wrapper, f, assign, update) self.check_wrapper(wrapper, f, assign, update) self.assertEqual(wrapper.__name__, 'wrapper') + self.assertEqual(wrapper.__qualname__, 'TestUpdateWrapper.' + + 'test_selective_update..wrapper') self.assertEqual(wrapper.__doc__, None) self.assertEqual(wrapper.attr, 'This is a different test') self.assertEqual(wrapper.dict_attr, f.dict_attr) @@ -332,6 +338,8 @@ pass self.check_wrapper(wrapper, f, (), ()) self.assertEqual(wrapper.__name__, 'wrapper') + self.assertEqual(wrapper.__qualname__, + 'TestWraps.test_no_update..wrapper') self.assertEqual(wrapper.__doc__, None) self.assertFalse(hasattr(wrapper, 'attr')) @@ -351,6 +359,8 @@ pass self.check_wrapper(wrapper, f, assign, update) self.assertEqual(wrapper.__name__, 'wrapper') + self.assertEqual(wrapper.__qualname__, + 'TestWraps.test_selective_update..wrapper') self.assertEqual(wrapper.__doc__, None) self.assertEqual(wrapper.attr, 'This is a different test') self.assertEqual(wrapper.dict_attr, f.dict_attr)