in awswrangler/_config.py [0:0]
def apply_configs(function: Callable[..., Any]) -> Callable[..., Any]:
"""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)
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: _ConfigValueType = config[name]
if name not in args:
_logger.debug("Applying default config argument %s with value %s.", name, value)
args[name] = value
elif _CONFIG_ARGS[name].enforced is True:
_logger.debug("Applying ENFORCED config argument %s with value %s.", name, 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) # pylint: disable=no-member
return wrapper