I am trying to create a decorator having more than one argument. However, it doesn't always seem to be receiving the unwrapped function.
def wait(*args, **kwargs):
print("args == ", args)
str_kwargs = "\n".join(str(x) for x in kwargs.keys())
print("kwargs: " + str_kwargs if len(str_kwargs) > 1 else "no kwargs")
return args[0]
#######################################################
print("begin test 1")
@wait
def print_something_else(something):
print (something)
#######################################################
print("begin test 2")
def print_something_else(something):
print(something)
print_something_else = wait(print_something_else, delay=0.2)
#######################################################
print("begin test 3")
@wait(delay=0.2)
def really_print_something_else(something):
print (something)
For test#3, args
is empty. We receive only delay
. It is as if we wrote:
really_print_something_else = wait(delay=0.2)