Source code for badger_batcher.utils.iterating
from dataclasses import dataclass
from typing import Any, Iterable, Iterator, Optional
[docs]@dataclass
class CacheIterator:
"""
Wrapper for iterables, that store the value fetch from an iterator
to property prev during each iterator.
This is sometimes useful with e.g. generators.
>>> records = (1, 2, 3)
>>> ci = CacheIterator(records)
>>> it = iter(ci)
>>> next(it)
1
>>> it.prev
1
"""
iterable: Iterable
prev: Optional[Any] = None
_iter_state: Optional[Iterator] = None
def __iter__(self):
self._iter_state = iter(self.iterable)
return self
def __next__(self):
item = next(self._iter_state)
self.prev = item
return item