import inspect


def get_clean_param_dict(signature):
    """Provide function signature withouth self, * and **.

    Create a dictionary of function parameters from a function
    signature object, omitting 'self' and */** parameters

    Parameters
    ----------
    signature: inspect.Signature
        Signature of function or method

    Returns
    -------
    dict
        Parameters and their defaults in form of {parameter_name: default_value}
    """
    return {
        p.name: p.default if p.default != inspect.Parameter.empty else None
        for p in signature.parameters.values()
        if p.name != "self" and p.kind != p.VAR_KEYWORD and p.kind != p.VAR_POSITIONAL
    }