New submission from Nick Coghlan: functools.update_wrapper inadvertently overwrites the just set __wrapped__ attribute when it updates the contents of __dict__.
This means the intended __wrapped__ chain is never created - instead, for every function in a wrapper stack, __wrapped__ will always refer to the innermost function. This means that using __wrapped__ to bypass functools.lru_cache doesn't work correctly if the decorated function already has __wrapped__ set. Explicitly setting __signature__ fortunately still works correctly, since that is checked before recursing down through __wrapped__ in inspect.signature. ---------- messages: 184648 nosy: ncoghlan priority: normal severity: normal stage: test needed status: open title: functools.update_wrapper doesn't overwrite attributes correctly type: behavior versions: Python 3.4 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue17482> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com