code: def partition(iterable, chunk_size, pad_none=False):
      
      args = [iter(iterable)] * chunk_size
      if not pad_none:
          return zip(*args)
      else:
          return it.zip_longest(*args)
docs: adapted from Toolz. Breaks an iterable into n iterables up to the
      certain chunk size, padding with Nones if availble.
  
      Example:
          >>> from searchtweets.utils import partition
          >>> iter_ = range(10)
          >>> list(partition(iter_, 3))
          [(0, 1, 2), (3, 4, 5), (6, 7, 8)]
          >>> list(partition(iter_, 3, pad_none=True))
          [(0, 1, 2), (3, 4, 5), (6, 7, 8), (9, None, None)]