code: def grouper(xs: Iterable, n: int, fillvalue=None):
      
      args = [iter(xs)] * n
      return zip_longest(*args, fillvalue=fillvalue)
docs: Collect data into fixed-length chunks or blocks.
      >>> from delphi.utils.fp import grouper
      >>> list(grouper('ABCDEFG', 3, 'x'))
      [('A', 'B', 'C'), ('D', 'E', 'F'), ('G', 'x', 'x')]