from typing import Callable


def create_callable(func: Callable, *args, **kwargs) -> Callable:
    """
    Function creates a callable function where the called function gets passed as an argument along with its
    args and kwargs.

    Args:
        func (Callable): Function to be called
        *args (any): Args passed to passed function
        **kwargs (any): Kwargs passed to passed function

    Returns:
        Callable: Function that executes passed function when called.
    """
    def callable_func(*caller_args, **caller_kwargs):  # Add caller args, used in handling events passing event kwarg
        return func(*args, *caller_args, **kwargs, **caller_kwargs)
    return callable_func