code: def timeRange(
          start: datetime.time, end: datetime.time,
          step: float) -> Iterator[datetime.datetime]:
      
      assert step > 0
      start = _fillDate(start)
      end = _fillDate(end)
      delta = datetime.timedelta(seconds=step)
      t = start
      while t < datetime.datetime.now():
          t += delta
      while t <= end:
          waitUntil(t)
          yield t
          t += delta
docs: Iterator that waits periodically until certain time points are
      reached while yielding those time points.
  
      Args:
          start: Start time, can be specified as datetime.datetime,
              or as datetime.time in which case today is used as the date
          end: End time, can be specified as datetime.datetime,
              or as datetime.time in which case today is used as the date
          step (float): The number of seconds of each period