human
I wrote the below code

    @functools.wraps(func)
    def wrapped_func(*args, **kwargs):
        '\n                                ..    todo::\n\n                                                WRITEME\n                                '
        try:
            func(*args, **kwargs)
        except TypeError:
            (argnames, varargs, keywords, defaults) = inspect.getargspec(func)
            posargs = dict(zip(argnames, args))
            bad_keywords = []
            for keyword in kwargs:
                if (keyword not in argnames):
                    bad_keywords.append(keyword)
            if (len(bad_keywords) > 0):
                bad = ',    '.join(bad_keywords)
                reraise_as(TypeError(('%s()    does    not    support    the    following    keywords:    %s' % (str(func.func_name), bad))))
            allargsgot = set((list(kwargs.keys()) + list(posargs.keys())))
            numrequired = (len(argnames) - len(defaults))
            diff = list((set(argnames[:numrequired]) - allargsgot))
            if (len(diff) > 0):
                reraise_as(TypeError(('%s()    did    not    get    required    args:    %s' % (str(func.func_name), ',    '.join(diff)))))
            raise
    return wrapped_func

What's a good function header?

=====
Here's a good function header?
assistant
#Here's a good function header.

def sensible_argument_errors(func):