human
I wrote the below code

    argspec = inspect.getargspec(fn)
    num_defaults = len((argspec.defaults or []))
    required_args = argspec.args[:(len(argspec.args) - num_defaults)]
    def isbound(method):
        return (getattr(method, 'im_self', None) is not None)
    if isbound(fn):
        required_args.pop(0)
    missing = [arg for arg in required_args if (arg not in kwargs)]
    missing = missing[len(args):]
    if missing:
        raise MissingArgs(missing)

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

def validate_args(fn, *args, **kwargs):