code: def range_filter(field, start_date_math=None, end_date_math=None, **kwargs):
      
      def inner(values):
          if len(values) != 1 or values[0].count('--') != 1 or values[0] == '--':
              raise RESTValidationError(
                  errors=[FieldError(field, 'Invalid range format.')])
  
          range_ends = values[0].split('--')
          range_args = dict()
  
          ineq_opers = [{'strict': 'gt', 'nonstrict': 'gte'},
                        {'strict': 'lt', 'nonstrict': 'lte'}]
          date_maths = [start_date_math, end_date_math]
  
          # Add the proper values to the dict
          for (range_end, strict, opers,
               date_math) in zip(range_ends, ['>', '<'], ineq_opers, date_maths):
  
              if range_end != '':
                  # If first char is '>' for start or '<' for end
                  if range_end[0] == strict:
                      dict_key = opers['strict']
                      range_end = range_end[1:]
                  else:
                      dict_key = opers['nonstrict']
  
                  if date_math:
                      range_end = '{0}||{1}'.format(range_end, date_math)
  
                  range_args[dict_key] = range_end
  
          args = kwargs.copy()
          args.update(range_args)
  
          return Range(**{field: args})
  
      return inner
docs: Create a range filter.
  
      :param field: Field name.
      :param start_date_math: Starting date.
      :param end_date_math: Ending date.
      :param kwargs: Addition arguments passed to the Range query.
      :returns: Function that returns the Range query.