code: def range(self, step):
          
  
          if self.__compare_timedelta(step, 0) == 0:
              raise ValueError("step must be not zero")
  
          is_inversion = False
          try:
              self.validate_time_inversion()
          except ValueError:
              is_inversion = True
  
          if not is_inversion:
              if self.__compare_timedelta(step, seconds=0) < 0:
                  raise ValueError("invalid step: expect greater than 0, actual={}".format(step))
          else:
              if self.__compare_timedelta(step, seconds=0) > 0:
                  raise ValueError("invalid step: expect less than 0, actual={}".format(step))
  
          current_datetime = self.start_datetime
          while current_datetime <= self.end_datetime:
              yield current_datetime
              current_datetime = current_datetime + step
docs: Return an iterator object.
  
          :param step: Step of iteration.
          :type step: |timedelta|/dateutil.relativedelta.relativedelta
          :return: iterator
          :rtype: iterator
  
          :Sample Code:
              .. code:: python
  
                  import datetime
                  from datetimerange import DateTimeRange
  
                  time_range = DateTimeRange("2015-01-01T00:00:00+0900", "2015-01-04T00:00:00+0900")
                  for value in time_range.range(datetime.timedelta(days=1)):
                      print(value)
          :Output:
              .. parsed-literal::
  
                  2015-01-01 00:00:00+09:00
                  2015-01-02 00:00:00+09:00
                  2015-01-03 00:00:00+09:00
                  2015-01-04 00:00:00+09:00