code: def sliding_impl(wrap, size, step, sequence):
      
      i = 0
      n = len(sequence)
      while i + size <= n or (step != 1 and i < n):
          yield wrap(sequence[i: i + size])
          i += step
docs: Implementation for sliding_t
      :param wrap: wrap children values with this
      :param size: size of window
      :param step: step size
      :param sequence: sequence to create sliding windows from
      :return: sequence of sliding windows