def apply_configs()

in cfn_tools/_config.py [0:0]


def apply_configs(function):
    """Decorate some function with configs."""
    signature = inspect.signature(function)
    args_names = list(signature.parameters.keys())
    valid_configs = [x for x in _CONFIG_DEFAULTS if x in args_names]

    def wrapper(*args, **kwargs):
        received_args = signature.bind_partial(*args, **kwargs).arguments
        available_configs = [x for x in valid_configs if (x not in received_args) and (hasattr(config, x) is True)]
        missing_args = {x: config[x] for x in available_configs}
        final_args = {**received_args, **missing_args}
        return function(**final_args)

    wrapper.__doc__ = function.__doc__
    wrapper.__name__ = function.__name__
    wrapper.__signature__ = signature
    return wrapper