19 lines
608 B
Python
19 lines
608 B
Python
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)
|