parameters: (
          validations, input_variable_path, input_values,
          configuration=None)
docstring: Raises an exception if the input_values are invalid
  
      Args:
          validations (dict): the validation dictionary.
          input_variable_path (tuple): the path to the input variable.
          input_values (list/str/int/float/date/datetime): the values that we
              are checking.
          configuration (Configuration): the configuration class.
docstring_summary: Raises an exception if the input_values are invalid
docstring_tokens: Raises an exception if the input_values are invalid
function: def check_validations(
          validations, input_variable_path, input_values,
          configuration=None):
      """Raises an exception if the input_values are invalid
  
      Args:
          validations (dict): the validation dictionary.
          input_variable_path (tuple): the path to the input variable.
          input_values (list/str/int/float/date/datetime): the values that we
              are checking.
          configuration (Configuration): the configuration class.
      """
  
      if input_values is None:
          return
  
      current_validations = validations[input_variable_path]
      if (is_json_validation_enabled('multipleOf', configuration) and
              'multiple_of' in current_validations and
              isinstance(input_values, (int, float)) and
              not (float(input_values) / current_validations['multiple_of']).is_integer()):
          # Note 'multipleOf' will be as good as the floating point arithmetic.
          raise ApiValueError(
              "Invalid value for `%s`, value must be a multiple of "
              "`%s`" % (
                  input_variable_path[0],
                  current_validations['multiple_of']
              )
          )
  
      if (is_json_validation_enabled('maxLength', configuration) and
              'max_length' in current_validations and
              len(input_values) > current_validations['max_length']):
          raise ApiValueError(
              "Invalid value for `%s`, length must be less than or equal to "
              "`%s`" % (
                  input_variable_path[0],
                  current_validations['max_length']
              )
          )
  
      if (is_json_validation_enabled('minLength', configuration) and
              'min_length' in current_validations and
              len(input_values) < current_validations['min_length']):
          raise ApiValueError(
              "Invalid value for `%s`, length must be greater than or equal to "
              "`%s`" % (
                  input_variable_path[0],
                  current_validations['min_length']
              )
          )
  
      if (is_json_validation_enabled('maxItems', configuration) and
              'max_items' in current_validations and
              len(input_values) > current_validations['max_items']):
          raise ApiValueError(
              "Invalid value for `%s`, number of items must be less than or "
              "equal to `%s`" % (
                  input_variable_path[0],
                  current_validations['max_items']
              )
          )
  
      if (is_json_validation_enabled('minItems', configuration) and
              'min_items' in current_validations and
              len(input_values) < current_validations['min_items']):
          raise ValueError(
              "Invalid value for `%s`, number of items must be greater than or "
              "equal to `%s`" % (
                  input_variable_path[0],
                  current_validations['min_items']
              )
          )
  
      items = ('exclusive_maximum', 'inclusive_maximum', 'exclusive_minimum',
               'inclusive_minimum')
      if (any(item in current_validations for item in items)):
          if isinstance(input_values, list):
              max_val = max(input_values)
              min_val = min(input_values)
          elif isinstance(input_values, dict):
              max_val = max(input_values.values())
              min_val = min(input_values.values())
          else:
              max_val = input_values
              min_val = input_values
  
      if (is_json_validation_enabled('exclusiveMaximum', configuration) and
              'exclusive_maximum' in current_validations and
              max_val >= current_validations['exclusive_maximum']):
          raise ApiValueError(
              "Invalid value for `%s`, must be a value less than `%s`" % (
                  input_variable_path[0],
                  current_validations['exclusive_maximum']
              )
          )
  
      if (is_json_validation_enabled('maximum', configuration) and
              'inclusive_maximum' in current_validations and
              max_val > current_validations['inclusive_maximum']):
          raise ApiValueError(
              "Invalid value for `%s`, must be a value less than or equal to "
              "`%s`" % (
                  input_variable_path[0],
                  current_validations['inclusive_maximum']
              )
          )
  
      if (is_json_validation_enabled('exclusiveMinimum', configuration) and
              'exclusive_minimum' in current_validations and
              min_val <= current_validations['exclusive_minimum']):
          raise ApiValueError(
              "Invalid value for `%s`, must be a value greater than `%s`" %
              (
                  input_variable_path[0],
                  current_validations['exclusive_maximum']
              )
          )
  
      if (is_json_validation_enabled('minimum', configuration) and
              'inclusive_minimum' in current_validations and
              min_val < current_validations['inclusive_minimum']):
          raise ApiValueError(
              "Invalid value for `%s`, must be a value greater than or equal "
              "to `%s`" % (
                  input_variable_path[0],
                  current_validations['inclusive_minimum']
              )
          )
      flags = current_validations.get('regex', {}).get('flags', 0)
      if (is_json_validation_enabled('pattern', configuration) and
              'regex' in current_validations and
              not re.search(current_validations['regex']['pattern'],
                            input_values, flags=flags)):
          err_msg = r"Invalid value for `%s`, must match regular expression `%s`" % (
                      input_variable_path[0],
                      current_validations['regex']['pattern']
                  )
          if flags != 0:
              # Don't print the regex flags if the flags are not
              # specified in the OAS document.
              err_msg = r"%s with flags=`%s`" % (err_msg, flags)
          raise ApiValueError(err_msg)
function_tokens: def check_validations ( validations , input_variable_path , input_values , configuration = None ) : if input_values is None : return current_validations = validations [ input_variable_path ] if ( is_json_validation_enabled ( 'multipleOf' , configuration ) and 'multiple_of' in current_validations and isinstance ( input_values , ( int , float ) ) and not ( float ( input_values ) / current_validations [ 'multiple_of' ] ) . is_integer ( ) ) : # Note 'multipleOf' will be as good as the floating point arithmetic. raise ApiValueError ( "Invalid value for `%s`, value must be a multiple of " "`%s`" % ( input_variable_path [ 0 ] , current_validations [ 'multiple_of' ] ) ) if ( is_json_validation_enabled ( 'maxLength' , configuration ) and 'max_length' in current_validations and len ( input_values ) > current_validations [ 'max_length' ] ) : raise ApiValueError ( "Invalid value for `%s`, length must be less than or equal to " "`%s`" % ( input_variable_path [ 0 ] , current_validations [ 'max_length' ] ) ) if ( is_json_validation_enabled ( 'minLength' , configuration ) and 'min_length' in current_validations and len ( input_values ) < current_validations [ 'min_length' ] ) : raise ApiValueError ( "Invalid value for `%s`, length must be greater than or equal to " "`%s`" % ( input_variable_path [ 0 ] , current_validations [ 'min_length' ] ) ) if ( is_json_validation_enabled ( 'maxItems' , configuration ) and 'max_items' in current_validations and len ( input_values ) > current_validations [ 'max_items' ] ) : raise ApiValueError ( "Invalid value for `%s`, number of items must be less than or " "equal to `%s`" % ( input_variable_path [ 0 ] , current_validations [ 'max_items' ] ) ) if ( is_json_validation_enabled ( 'minItems' , configuration ) and 'min_items' in current_validations and len ( input_values ) < current_validations [ 'min_items' ] ) : raise ValueError ( "Invalid value for `%s`, number of items must be greater than or " "equal to `%s`" % ( input_variable_path [ 0 ] , current_validations [ 'min_items' ] ) ) items = ( 'exclusive_maximum' , 'inclusive_maximum' , 'exclusive_minimum' , 'inclusive_minimum' ) if ( any ( item in current_validations for item in items ) ) : if isinstance ( input_values , list ) : max_val = max ( input_values ) min_val = min ( input_values ) elif isinstance ( input_values , dict ) : max_val = max ( input_values . values ( ) ) min_val = min ( input_values . values ( ) ) else : max_val = input_values min_val = input_values if ( is_json_validation_enabled ( 'exclusiveMaximum' , configuration ) and 'exclusive_maximum' in current_validations and max_val >= current_validations [ 'exclusive_maximum' ] ) : raise ApiValueError ( "Invalid value for `%s`, must be a value less than `%s`" % ( input_variable_path [ 0 ] , current_validations [ 'exclusive_maximum' ] ) ) if ( is_json_validation_enabled ( 'maximum' , configuration ) and 'inclusive_maximum' in current_validations and max_val > current_validations [ 'inclusive_maximum' ] ) : raise ApiValueError ( "Invalid value for `%s`, must be a value less than or equal to " "`%s`" % ( input_variable_path [ 0 ] , current_validations [ 'inclusive_maximum' ] ) ) if ( is_json_validation_enabled ( 'exclusiveMinimum' , configuration ) and 'exclusive_minimum' in current_validations and min_val <= current_validations [ 'exclusive_minimum' ] ) : raise ApiValueError ( "Invalid value for `%s`, must be a value greater than `%s`" % ( input_variable_path [ 0 ] , current_validations [ 'exclusive_maximum' ] ) ) if ( is_json_validation_enabled ( 'minimum' , configuration ) and 'inclusive_minimum' in current_validations and min_val < current_validations [ 'inclusive_minimum' ] ) : raise ApiValueError ( "Invalid value for `%s`, must be a value greater than or equal " "to `%s`" % ( input_variable_path [ 0 ] , current_validations [ 'inclusive_minimum' ] ) ) flags = current_validations . get ( 'regex' , { } ) . get ( 'flags' , 0 ) if ( is_json_validation_enabled ( 'pattern' , configuration ) and 'regex' in current_validations and not re . search ( current_validations [ 'regex' ] [ 'pattern' ] , input_values , flags = flags ) ) : err_msg = r"Invalid value for `%s`, must match regular expression `%s`" % ( input_variable_path [ 0 ] , current_validations [ 'regex' ] [ 'pattern' ] ) if flags != 0 : # Don't print the regex flags if the flags are not # specified in the OAS document. err_msg = r"%s with flags=`%s`" % ( err_msg , flags ) raise ApiValueError ( err_msg )