diff --git a/src/trainpulse/detectors.py b/src/trainpulse/detectors.py index 3bb1b4d..cd621e8 100644 --- a/src/trainpulse/detectors.py +++ b/src/trainpulse/detectors.py @@ -3,6 +3,7 @@ from __future__ import annotations import math +from collections import deque from trainpulse._types import Alert, AlertSeverity @@ -12,12 +13,10 @@ class RollingWindow: def __init__(self, size: int) -> None: self._size = max(size, 1) - self._values: list[float] = [] + self._values: deque[float] = deque(maxlen=self._size) def add(self, value: float) -> None: self._values.append(value) - if len(self._values) > self._size: - self._values.pop(0) @property def values(self) -> list[float]: diff --git a/src/trainpulse/report.py b/src/trainpulse/report.py index 0db96b2..51b2b57 100644 --- a/src/trainpulse/report.py +++ b/src/trainpulse/report.py @@ -3,6 +3,7 @@ from __future__ import annotations import json +import math from pathlib import Path from typing import Any @@ -24,7 +25,7 @@ def report_to_dict(report: TrainingReport) -> dict[str, Any]: "detector": a.detector, "message": a.message, "metric_name": a.metric_name, - "metric_value": a.metric_value, + "metric_value": a.metric_value if math.isfinite(a.metric_value) else None, } for a in report.alerts ],