"""FrequencyStat — named multi-period frequency coordinator. Ported from net.i2p.stat.FrequencyStat. """ from typing import List, Optional from i2p_stat.frequency import Frequency class FrequencyStat: """A named statistic containing Frequency objects for multiple periods.""" def __init__( self, name: str, description: str, group: str, periods: List[int], ) -> None: self._name = name self._description = description self._group = group self._frequencies = [Frequency(p) for p in periods] @property def name(self) -> str: return self._name @property def group_name(self) -> str: return self._group @property def description(self) -> str: return self._description def get_periods(self) -> List[int]: return [f.period for f in self._frequencies] def get_frequency(self, period: int) -> Optional[Frequency]: for f in self._frequencies: if f.period == period: return f return None def event_occurred(self) -> None: for f in self._frequencies: f.event_occurred() def coalesce_stats(self) -> None: for f in self._frequencies: f.recalculate() def get_event_count(self) -> int: if self._frequencies: return self._frequencies[0].get_event_count() return 0