code: def robust_partition_all(n, iterable):
      
      it = iter(iterable)
      while True:
          x = []
          for _ in range(n):
              try:
                  x.append(next(it))
              except StopIteration:
                  yield x
                  # Omitting this StopIteration results in a segfault!
                  raise StopIteration
          yield x
docs: replaces partition_all with a more robust version.
      Workaround for a segfault in pybedtools when using a BedTool as an iterator:
      https://github.com/daler/pybedtools/issues/88 for the discussion