"""RateAverages — reusable container for average computation. Ported from net.i2p.stat.RateAverages. """ import threading class RateAverages: """Holds computed averages for a Rate. Thread-local reuse via get_temp().""" _thread_local = threading.local() def __init__(self) -> None: self.average: float = 0.0 self.current: float = 0.0 self.last: float = 0.0 self.total_values: float = 0.0 self.total_event_count: int = 0 @classmethod def get_temp(cls) -> "RateAverages": """Get a thread-local reusable instance.""" if not hasattr(cls._thread_local, "instance"): cls._thread_local.instance = RateAverages() return cls._thread_local.instance