def get_function_spec(name):
    """Return a dictionary with the specification of a function:
    parameter names and defaults (value, bounds, scale, etc.).

    Returns
    -------
    par_names : list
        List of parameter names for this function.

    norm_par : str
        Name of normalization parameter.

    default : dict
        Parameter defaults dictionary.
    """
    if not hasattr(get_function_spec, 'fndict'):
        modelfile = os.path.join('$FERMIPY_ROOT',
                                 'data', 'models.yaml')
        modelfile = os.path.expandvars(modelfile)
        get_function_spec.fndict = yaml.load(open(modelfile))

    if not name in get_function_spec.fndict.keys():
        raise Exception('Invalid Function Name: %s' % name)

    return get_function_spec.fndict[name]