docs: 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)