From 41eb7164df4f779864cfad52e5470286ef4fcb4c Mon Sep 17 00:00:00 2001 From: "Andrew M. Kuchling" Date: Fri, 27 Oct 2006 16:39:10 +0000 Subject: [PATCH] [Bug #1576241] Let functools.wraps work with built-in functions --- Lib/functools.py | 2 +- Lib/test/test_functools.py | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Lib/functools.py b/Lib/functools.py index 1fafb0199a8..bb13713a9c8 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 8dc185b7210..6012f9f8551 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):