Module pedantic.decorators.fn_deco_require_kwargs

Functions

def require_kwargs(func: Callable[..., ~ReturnType]) ‑> Callable[..., ~ReturnType]
Expand source code
def require_kwargs(func: F) -> F:
    """
        Checks that each passed argument is a keyword argument.

        Example:

        >>> @require_kwargs
        ... def my_function(a, b, c):
        ...     return a + b + c
        >>> my_function(5, 4, 3)
        Traceback (most recent call last):
        ...
        pedantic.exceptions.PedanticCallWithArgsException: In function my_function:
        Use kwargs when you call function my_function. Args: (5, 4, 3)
        >>> my_function(a=5, b=4, c=3)
        12
    """

    @wraps(func)
    def wrapper(*args: Any, **kwargs: Any) -> ReturnType:
        decorated_func = DecoratedFunction(func=func)
        call = FunctionCall(func=decorated_func, args=args, kwargs=kwargs, context={})
        call.assert_uses_kwargs()
        return func(*args, **kwargs)
    return wrapper

Checks that each passed argument is a keyword argument.

Example:

>>> @require_kwargs
... def my_function(a, b, c):
...     return a + b + c
>>> my_function(5, 4, 3)
Traceback (most recent call last):
...
pedantic.exceptions.PedanticCallWithArgsException: In function my_function:
Use kwargs when you call function my_function. Args: (5, 4, 3)
>>> my_function(a=5, b=4, c=3)
12