def validate(method, auth, *args, **kwargs):
    """Validate a method based on the METHOD_RULES above.

    Raises a PyCronofyValidationError on error.

    :param string method: Method being validated.
    :param Auth auth: Auth instance.
    :param *args: Positional arguments for method.
    :param **kwargs: Keyword arguments for method.
    """
    if method not in METHOD_RULES:
        raise PyCronofyValidationError('Method "%s" not found.' % method, method)

    m = METHOD_RULES[method]
    arguments = {}
    number_of_args = len(args)
    for i, key in enumerate(m['args']):
        if i < number_of_args:
            arguments[key] = args[i]
        elif key in kwargs:
            arguments[key] = kwargs[key]
        else:
            arguments[key] = None
    check_exists_in_object(method, auth, m['auth'])
    if 'required' in m:
        check_exists_in_dictionary(method, arguments, m['required'])
    if 'datetime' in m:
        check_datetime(method, arguments, m['datetime'])
    if 'dicts' in m:
        for d in m['dicts']:
            check_exists_in_dictionary(method, arguments[d], m['dicts'][d], d)
    if 'dicts_datetime' in m:
        for d in m['dicts_datetime']:
            check_datetime(method, arguments[d], m['dicts_datetime'][d], d)
Validate a method based on the METHOD_RULES above.

    Raises a PyCronofyValidationError on error.

    :param string method: Method being validated.
    :param Auth auth: Auth instance.
    :param *args: Positional arguments for method.
    :param **kwargs: Keyword arguments for method.