Source code for src.data_acquisition.sequencers.predefined_screen_sequencer
from logging import Logger
from typing import Optional, Sequence, TypeVar
from ..eventful_screen import EventfulScreen
from .errors import ScreenSequencerStopIteration
from .screen_sequencer import ScreenSequencer
T = TypeVar("T")
[docs]
class PredefinedScreenSequencer(ScreenSequencer[T]):
[docs]
def __init__(
self,
*,
screens: Sequence[EventfulScreen[T]],
logger: Optional[Logger] = None,
) -> None:
"""
:param screens: A sequence of screens to be returned by the sequencer.
"""
super().__init__(logger=logger)
self._screens = screens
self._idx = 0
def _get_next(self) -> EventfulScreen[T]:
if self._idx >= len(self._screens):
raise ScreenSequencerStopIteration
result = self._screens[self._idx]
self._idx += 1
return result