code: def generate_range(start=None, end=None, periods=None, offset=BDay()):
      
      from pandas.tseries.frequencies import to_offset
      offset = to_offset(offset)
  
      start = to_datetime(start)
      end = to_datetime(end)
  
      if start and not offset.onOffset(start):
          start = offset.rollforward(start)
  
      elif end and not offset.onOffset(end):
          end = offset.rollback(end)
  
      if periods is None and end < start and offset.n >= 0:
          end = None
          periods = 0
  
      if end is None:
          end = start + (periods - 1) * offset
  
      if start is None:
          start = end - (periods - 1) * offset
  
      cur = start
      if offset.n >= 0:
          while cur <= end:
              yield cur
  
              # faster than cur + offset
              next_date = offset.apply(cur)
              if next_date <= cur:
                  raise ValueError('Offset {offset} did not increment date'
                                   .format(offset=offset))
              cur = next_date
      else:
          while cur >= end:
              yield cur
  
              # faster than cur + offset
              next_date = offset.apply(cur)
              if next_date >= cur:
                  raise ValueError('Offset {offset} did not decrement date'
                                   .format(offset=offset))
              cur = next_date
docs: Generates a sequence of dates corresponding to the specified time
      offset. Similar to dateutil.rrule except uses pandas DateOffset
      objects to represent time increments.
  
      Parameters
      ----------
      start : datetime (default None)
      end : datetime (default None)
      periods : int, (default None)
      offset : DateOffset, (default BDay())
  
      Notes
      -----
      * This method is faster for generating weekdays than dateutil.rrule
      * At least two of (start, end, periods) must be specified.
      * If both start and end are specified, the returned dates will
      satisfy start <= date <= end.
  
      Returns
      -------
      dates : generator object