"""Toy Solar Meter Adapter with deterministic replay support.""" from dataclasses import dataclass, field from typing import Any, Dict, List, Optional @dataclass class SolarMeterAdapter: site_id: str samples: Optional[List[Dict[str, Any]]] = None _cursor: int = field(init=False, default=0) def __post_init__(self) -> None: if self.samples is None: self.samples = [] def read_meter(self) -> Dict[str, Any]: if self.samples: sample_list = self.samples if self._cursor >= len(sample_list): raise IndexError("No more solar meter samples available") reading = dict(sample_list[self._cursor]) self._cursor += 1 reading.setdefault("site_id", self.site_id) reading.setdefault("timestamp", self._cursor) reading.setdefault("status", "ok") return reading return { "site_id": self.site_id, "timestamp": self._cursor, "solar_output_kw": 750.0, "status": "ok", }