code: def next(self):
      
      options = {}
      if self._buffer_size:
        options["read_buffer_size"] = self._buffer_size
      if self._account_id:
        options["_account_id"] = self._account_id
      while True:
        filename = self._next_file()
        if filename is None:
          raise StopIteration()
        if (self._path_filter and
            not self._path_filter.accept(self._slice_ctx, filename)):
          continue
        try:
          start_time = time.time()
          handle = cloudstorage.open(filename, **options)
          self._slice_ctx.incr(self.COUNTER_IO_READ_MSEC,
                               int(time.time() - start_time) * 1000)
          self._slice_ctx.incr(self.COUNTER_FILE_READ)
          return handle
        except cloudstorage.NotFoundError:
          logging.warning("File %s may have been removed. Skipping file.",
                          filename)
          self._slice_ctx.incr(self.COUNTER_FILE_MISSING)
docs: Returns a handler to the next file.
  
      Non existent files will be logged and skipped. The file might have been
      removed after input splitting.
  
      Returns:
        The next input from this input reader in the form of a cloudstorage
        ReadBuffer that supports a File-like interface (read, readline, seek,
        tell, and close). An error may be raised if the file can not be opened.
  
      Raises:
        StopIteration: The list of files has been exhausted.