New submission from productivememberofsociety666:

functools.wraps currently only changes the wrapped function's "superficial" 
attributes such as docstring or annotations.

But it would be useful to be able to change the function's actual argspec as 
well so it matches up with the changed annotations (e.g. to get proper error 
messages when the wrapped and wrapper functions' argspecs don't match up).

To avoid breaking existing code, this could be achieved by adding another 
argument change_argspec (defaulting to False) to functools.wraps. Of course, 
the way functools.wraps is implemented now as well as its current documentation 
would have to be thrown out of the window in order for this to work (at least 
for the case of change_argspec==True).


There is an existing 3rd party package ( https://pypi.python.org/pypi/decorator 
) which has a decorator called "decorator" that does kind of what I'd want 
functools.wraps to do, but the details of how it is called are different and 
either way it's embarassing that you have to fall back on a 3rd party library 
to get functionality that is present but incomplete in Python's standard 
library.

----------
components: Library (Lib)
messages: 239165
nosy: productivememberofsociety666
priority: normal
severity: normal
status: open
title: functools.wraps should be able to change function argspec as well
type: enhancement
versions: Python 3.2, Python 3.3, Python 3.4, Python 3.5, Python 3.6

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue23764>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to