code: def minibatch(items, size=8):
      
      if isinstance(size, int):
          size_ = itertools.repeat(size)
      else:
          size_ = size
      items = iter(items)
      while True:
          batch_size = next(size_)
          batch = list(itertools.islice(items, int(batch_size)))
          if len(batch) == 0:
              break
          yield list(batch)
docs: Iterate over batches of items. `size` may be an iterator,
      so that batch-size can vary on each step.