docs: def batched(iterable, size):
      """
      Split an iterable into constant sized chunks
      Recipe from http://stackoverflow.com/a/8290514
      """
      length = len(iterable)
      for batch_start in range(0, length, size):
          yield iterable[batch_start:batch_start+size]