docs: def _file_iter_range(fp, offset, bytes, maxread=1024*1024):
      ''' Yield chunks from a range in a file. No chunk is bigger than maxread.'''
      fp.seek(offset)
      while bytes > 0:
          part = fp.read(min(bytes, maxread))
          if not part: break
          bytes -= len(part)
          yield part