from typing import Callable
import functools
from typing import Any


def kwargs_parameter_dict(func: Callable) -> Callable:
    """Decorator that passes all received `kwargs` as a keyword dictionary parameter.

    Arguments:
        func:
            The function to be decorated.

    Returns:
        The decorated function, which now has a new dictionary parameter called
        `parameter_dict` with all the original keyword arguments.
    """

    @functools.wraps(func)
    def wrapper(*args, **kwargs) -> Any:
        """Wrapped function to be returned by the decorator.

        Returns:
            The original function evaluation.

        """
        return func(*args, parameter_dict=kwargs, **kwargs)

    return wrapper