'Returns the next input from this input reader as (ZipInfo, opener) tuple.
Returns:
The next input from this input reader, in the form of a 2-tuple.
The first element of the tuple is a zipfile.ZipInfo object.
The second element of the tuple is a zero-argument function that, when
called, returns the complete body of the file.'

def next(self):

    if (not self._zip):
        self._zip = zipfile.ZipFile(self._reader(self._blob_key))
        self._entries = self._zip.infolist()[self._start_index:self._end_index]
        self._entries.reverse()
    if (not self._entries):
        raise StopIteration()
    entry = self._entries.pop()
    self._start_index += 1
    return (entry, (lambda : self._zip.read(entry.filename)))
