from __future__ import annotations from collections import OrderedDict class EventDeduplicator: def __init__(self, max_size: int = 10000): self._seen: OrderedDict[str, None] = OrderedDict() self._max_size = max_size def is_duplicate(self, event_id: str) -> bool: if event_id in self._seen: self._seen.move_to_end(event_id) return True self._seen[event_id] = None if len(self._seen) > self._max_size: self._seen.popitem(last=False) return False def clear(self) -> None: self._seen.clear() def __len__(self) -> int: return len(self._seen)