Dada una función:¿Cómo puedo cambiar programáticamente la argspec de una función en un decorador de Python?
def func(f1, kw='default'):
pass
bare_argspec = inspect.getargspec(func)
@decorator
def func2(f1, kw='default'):
pass
decorated_argspec = inspect.getargspec(func2)
¿Cómo puedo crear un decorador de tal manera que bare_argspec == decorated_argspec
?
(En cuanto a por qué, el marco que llama a la función decorada hace una inspección argspec para elegir qué pasar, por lo que el decorador tiene que retener el mismo argspec para jugar bien. Cuando planteé esta pregunta en #python, Recibí un largo discurso sobre por qué apesta el marco, que no es lo que estoy buscando, tengo que resolver el problema aquí. Además, también estoy interesado en la respuesta)
SyntaxError: inválido - Creo que quiere decir 'def func (...' –