code: def grouper(iterable: Iterable, size: int) -> Iterable:
      
      it = iter(iterable)
      while True:
          chunk = list(itertools.islice(it, size))
          if not chunk:
              return
          yield chunk
docs: Collect data into fixed-length chunks or blocks without discarding underfilled chunks or padding them.
  
      :param iterable: A sequence of inputs.
      :param size: Chunk size.
      :return: Sequence of chunks.