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)
