Source code for gigl.utils.iterator

from collections.abc import Iterable, Iterator
from typing import TypeVar

_T = TypeVar("_T")


[docs] class InfiniteIterator(Iterator[_T]): """ A wrapper around iterators (objects with __iter__ and __next__ methods) that loop indefinitely over the data. """ def __init__(self, iterable: Iterable[_T]): self._iterable = iterable self._iter = iter(iterable) def __iter__(self) -> Iterator[_T]: return self def __next__(self) -> _T: try: return next(self._iter) except StopIteration: self._iter = iter(self._iterable) return next(self._iter)