docs: def chunked(iterable, n):
      """Break an iterable into lists of a given length::
  
          >>> list(chunked([1, 2, 3, 4, 5, 6, 7], 3))
          [[1, 2, 3], [4, 5, 6], [7]]
  
      If the length of ``iterable`` is not evenly divisible by ``n``, the last
      returned list will be shorter.
  
      This is useful for splitting up a computation on a large number of keys
      into batches, to be pickled and sent off to worker processes. One example
      is operations on rows in MySQL, which does not implement server-side
      cursors properly and would otherwise load the entire dataset into RAM on
      the client.
      
      Taken from more_itertools
  
      """
      return iter(functools.partial(take, n, iter(iterable)), [])