Como obter o código-fonte da função envolvida por um decorador?
Eu queria imprimir o código fonte paramy_func
, envolvido pormy_decorator
:
import inspect
from functools import wraps
def my_decorator(some_function):
@wraps(some_function)
def wrapper():
some_function()
return wrapper
@my_decorator
def my_func():
print "supposed to return this instead!"
return
print inspect.getsource(my_func)
No entanto, ele retorna a origem do wrapper:
@wraps(some_function)
def wrapper():
some_function()
Existe uma maneira de imprimir o seguinte?
def my_func():
print "supposed to return this instead!"
return
Observe que o acima é abstraído de um programa maior. É claro que podemos nos livrar do decorador neste exemplo, mas não é isso que estou procurando.