import inspect


def user_setup_sig(arg_dict):
    """
    Generate the inspect.Signature we want our output function to have.
    """

    params = list()
    params.append(inspect.Parameter(
        'self',
        inspect.Parameter.POSITIONAL_OR_KEYWORD))

    for arg_name in sorted(arg_dict.keys()):
        data = arg_dict[arg_name]
        param = inspect.Parameter(
            arg_name,
            inspect.Parameter.POSITIONAL_OR_KEYWORD,
            annotation=data['typ'])
        params.append(param)

    return inspect.Signature(params)