def apply_configs()

in awswrangler/_config.py [0:0]


def apply_configs(function: FunctionType) -> FunctionType:
    """Decorate some function with configs."""
    signature = inspect.signature(function)
    args_names: tuple[str, ...] = tuple(signature.parameters.keys())
    available_configs: tuple[str, ...] = tuple(x for x in _CONFIG_ARGS if x in args_names)

    @wraps(function)
    def wrapper(*args_raw: Any, **kwargs: Any) -> Any:
        args: dict[str, Any] = signature.bind_partial(*args_raw, **kwargs).arguments
        for name in available_configs:
            if hasattr(config, name) is True:
                value = config[name]
                _assign_args_value(args, name, value)

        for name, param in signature.parameters.items():
            if param.kind == param.VAR_KEYWORD and name in args:
                if isinstance(args[name], dict) is False:
                    raise RuntimeError(f"Argument {name} ({args[name]}) is a non dictionary keyword argument.")
                keywords: dict[str, Any] = args[name]
                del args[name]
                args = {**args, **keywords}
        return function(**args)

    wrapper.__doc__ = _inject_config_doc(doc=function.__doc__, available_configs=available_configs)
    wrapper.__name__ = function.__name__
    wrapper.__setattr__("__signature__", signature)
    return wrapper  # type: ignore[return-value]