from functools import wraps
def log_function_data(fn):
    @wraps(fn)
    def wrapper(*args, **kwargs):
        """I AM WRAPPER FUNCTION"""
        print(f"you are about to call {fn.__name__}")
        print(f"Here's the documentation: {fn.__doc__}")
        return fn(*args, **kwargs)
    return wrapper


@log_function_data
def add(x,y):
    """Adds two numbers together."""
    return x + y

print(add.__doc__) #Adds two numbers together (if there wasn't wraps function it would output 
                   #I AM WRAPPER FUNCTION from wrapper function)
print(add.__name__) #add ((if there wasn't wraps function it would output 
                   #add from wrapper function))
help(add) #calls help screen for add function (if there wasn't wraps function it would output 
                   #help screen for wrapper function)
