mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
Issue #8814: function annotations (the __annotations__
attribute)
are now included in the set of attributes copied by default by functools.wraps and functools.update_wrapper. Patch by Terrence Cole.
This commit is contained in:
parent
5626eec0c2
commit
560f7647ce
5 changed files with 17 additions and 7 deletions
|
@ -19,7 +19,7 @@ from operator import itemgetter
|
|||
# update_wrapper() and wraps() are tools to help write
|
||||
# wrapper functions that can handle naive introspection
|
||||
|
||||
WRAPPER_ASSIGNMENTS = ('__module__', '__name__', '__doc__')
|
||||
WRAPPER_ASSIGNMENTS = ('__module__', '__name__', '__doc__', '__annotations__')
|
||||
WRAPPER_UPDATES = ('__dict__',)
|
||||
def update_wrapper(wrapper,
|
||||
wrapped,
|
||||
|
@ -37,7 +37,8 @@ def update_wrapper(wrapper,
|
|||
function (defaults to functools.WRAPPER_UPDATES)
|
||||
"""
|
||||
for attr in assigned:
|
||||
setattr(wrapper, attr, getattr(wrapped, attr))
|
||||
if hasattr(wrapped, attr):
|
||||
setattr(wrapper, attr, getattr(wrapped, attr))
|
||||
for attr in updated:
|
||||
getattr(wrapper, attr).update(getattr(wrapped, attr, {}))
|
||||
# Return the wrapper so this can be used as a decorator via partial()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue