diff options
author | Andrew M. Kuchling <amk@amk.ca> | 2006-10-27 16:42:19 +0000 |
---|---|---|
committer | Andrew M. Kuchling <amk@amk.ca> | 2006-10-27 16:42:19 +0000 |
commit | 3d6a834e29f83d043bd0bb239000cd0361eb94f6 (patch) | |
tree | dd69f088b29c09723329c3f0547f1b3acea03cec | |
parent | d2ee30b4851905b00fb77c67f828171b45b043ed (diff) | |
download | cpython-git-3d6a834e29f83d043bd0bb239000cd0361eb94f6.tar.gz |
[Bug #1576241] Let functools.wraps work with built-in functions
-rw-r--r-- | Lib/functools.py | 2 | ||||
-rw-r--r-- | Lib/test/test_functools.py | 7 | ||||
-rw-r--r-- | Misc/NEWS | 2 |
3 files changed, 10 insertions, 1 deletions
diff --git a/Lib/functools.py b/Lib/functools.py index 8783f08488..96430365c9 100644 --- a/Lib/functools.py +++ b/Lib/functools.py @@ -32,7 +32,7 @@ def update_wrapper(wrapper, for attr in assigned: setattr(wrapper, attr, getattr(wrapped, attr)) for attr in updated: - getattr(wrapper, attr).update(getattr(wrapped, attr)) + getattr(wrapper, attr).update(getattr(wrapped, attr, {})) # Return the wrapper so this can be used as a decorator via partial() return wrapper diff --git a/Lib/test/test_functools.py b/Lib/test/test_functools.py index 8dc185b721..6012f9f855 100644 --- a/Lib/test/test_functools.py +++ b/Lib/test/test_functools.py @@ -210,6 +210,13 @@ class TestUpdateWrapper(unittest.TestCase): self.assertEqual(wrapper.attr, 'This is a different test') self.assertEqual(wrapper.dict_attr, f.dict_attr) + def test_builtin_update(self): + # Test for bug #1576241 + def wrapper(): + pass + functools.update_wrapper(wrapper, max) + self.assertEqual(wrapper.__name__, 'max') + self.assert_(wrapper.__doc__.startswith('max(')) class TestWraps(TestUpdateWrapper): @@ -105,6 +105,8 @@ Library - Bug #1565661: in webbrowser, split() the command for the default GNOME browser in case it is a command with args. +- Bug #1576241: fix functools.wraps() to work on built-in functions. + - Fix a bug in traceback.format_exception_only() that led to an error being raised when print_exc() was called without an exception set. In version 2.4, this printed "None", restored that behavior. |