code: def fetch(self):
          '''
          Gives all the data it has stored, and remembers what it has given.
          Later we need to call commit() to actually remove the data from the
          cache.
          '''
          if self._fetched is not None:
              raise RuntimeError('fetch() was called but the previous one has '
                                 'not yet been applied. Not supported')
          if self._cache:
              self._fetched = len(self._cache)
          return self._cache[0:self._fetchedf fetch(self):
          '''
          Gives all the data it has stored, and remembers what it has given.
          Later we need to call commit() to actually remove the data from the
          cache.
          '''
          if self._fetched is not None:
              raise RuntimeError('fetch() was called but the previous one has '
                                 'not yet been applied. Not supported')
          if self._cache:
              self._fetched = len(self._cache)
          return self._cache[0:self._fetched]
docs: Gives all the data it has stored, and remembers what it has given.
          Later we need to call commit() to actually remove the data from the
          cache.