def METHOD_NAME(func):
    """ Runs the function only once (caches the return value for subsequent runs) """
    @functools.wraps(func)
    def decorator(*args, **kwargs):
        if decorator.has_run:
            return decorator.result
        decorator.result = func(*args, **kwargs)
        decorator.has_run = True
        return decorator.result
    decorator.has_run = False
    decorator.result = None
    return decorator