from typing import Callable
from typing import Set
import inspect


def get_mandatory_args(func: Callable) -> Set[str]:
    """Returns the mandatory args for a function as a set

    Returns the set of arguments names of a functions that are mandatory,
    i.e. does not have a default value. `**kwargs` type arguments are ignored.

    Parameters
    ----------
    func :
        Function to find mandatory arguments for

    Returns
    -------
    :
        The of mandatory arguments
    """
    signature = inspect.signature(func)
    return {k for k, v in signature.parameters.items() if v.default is inspect.Parameter.empty}