Module pedantic.decorators.fn_deco_rename_kwargs
Functions
def rename_kwargs(*params: Rename) ‑> Callable[[Callable[..., ~ReturnType]], Callable[..., ~ReturnType]]
-
Expand source code
def rename_kwargs(*params: Rename) -> Callable[[F], F]: """ Renames the keyword arguments based on the given "Rename" rules when the decorated function is called. You can also use this to define aliases for keyword arguments. Example: >>> @rename_kwargs( ... Rename(from_='firstname', to='a'), ... Rename(from_='lastname', to='b'), ... ) ... def my_function(a, b): ... return a + ' ' + b >>> my_function(a='egon', b='olsen') # the normal way 'egon olsen' >>> my_function(firstname='egon', lastname='olsen') # using new defined keyword arguments 'egon olsen' """ param_dict = {p.from_: p.to for p in params} def decorator(func: F) -> F: @wraps(func) def wrapper(*args, **kwargs) -> ReturnType: result_kwargs = {} for k, v in kwargs.items(): if k in param_dict: result_kwargs[param_dict[k]] = kwargs[k] else: result_kwargs[k] = kwargs[k] return func(*args, **result_kwargs) return wrapper return decorator
Renames the keyword arguments based on the given "Rename" rules when the decorated function is called. You can also use this to define aliases for keyword arguments.
Example:
>>> @rename_kwargs( ... Rename(from_='firstname', to='a'), ... Rename(from_='lastname', to='b'), ... ) ... def my_function(a, b): ... return a + ' ' + b >>> my_function(a='egon', b='olsen') # the normal way 'egon olsen' >>> my_function(firstname='egon', lastname='olsen') # using new defined keyword arguments 'egon olsen'
Classes
class Rename (from_: str, to: str)
-
Expand source code
class Rename: def __init__(self, from_: str, to: str) -> None: self.from_ = from_ self.to = to