Build an evaluation checker that will return True when it is
        guaranteed that all positional arguments have been accounted for.

def arity_evaluation_checker(function):
        """Build an evaluation checker that will return True when it is
        guaranteed that all positional arguments have been accounted for.
        """
        is_class = inspect.isclass(function)
        if is_class:
            function = function.__init__
        function_info = inspect.getargspec(function)
        function_args = function_info.args
        if is_class:
            # This is to handle the fact that self will get passed in
            # automatically.
            function_args = function_args[1:]

        def evaluation_checker(*args, **kwargs):
            kwarg_keys = set(kwargs.keys())
            if function_info.keywords is None:
                acceptable_kwargs = function_args[len(args):]
                # Make sure that we didn't get an argument we can't handle.
                if not kwarg_keys.issubset(acceptable_kwargs):
                    TypeError("Unrecognized Arguments: {0}".format(
                        [key for key in kwarg_keys
                         if key not in acceptable_kwargs]
                    ))

            needed_args = function_args[len(args):]
            if function_info.defaults:
                needed_args = needed_args[:-len(function_info.defaults)]
            return not needed_args or kwarg_keys.issuperset(needed_args)
        return evaluation_checker