Spaces:
Runtime error
Runtime error
| import random | |
| from typing import Iterator, Optional | |
| from .base import BaseDataSource | |
| from ..model import ImageItem | |
| class ComposedDataSource(BaseDataSource): | |
| def __init__(self, *sources: BaseDataSource): | |
| self.sources = sources | |
| def _iter(self) -> Iterator[ImageItem]: | |
| for source in self.sources: | |
| yield from iter(source) | |
| def _iter_from(self) -> Iterator[ImageItem]: | |
| yield from self._iter() | |
| class ParallelDataSource(BaseDataSource): | |
| def __init__(self, *sources: BaseDataSource, seed: Optional[int] = None): | |
| self.sources = sources | |
| self.random = random.Random(seed) | |
| def _iter(self) -> Iterator[ImageItem]: | |
| iters = [iter(source) for source in self.sources] | |
| while len(iters) > 0: | |
| id_ = self.random.choice(range(len(iters))) | |
| iter_ = iters[id_] | |
| try: | |
| yield next(iter_) | |
| except StopIteration: | |
| iters.pop(id_) | |
| def _iter_from(self) -> Iterator[ImageItem]: | |
| yield from self._iter() | |