import time from collections import deque class HistoryStore: def __init__(self, maxlen: int) -> None: self._buf: deque[tuple[float, dict[str, float | int | None]]] = deque(maxlen=maxlen) def record(self, sample: dict[str, float | int | None]) -> None: self._buf.append((time.time(), sample)) def snapshot(self) -> list[tuple[float, dict[str, float | int | None]]]: return list(self._buf) def latest(self) -> dict[str, float | int | None] | None: return self._buf[-1][1] if self._buf else None def __len__(self) -> int: return len(self._buf)