import time from collections import OrderedDict from yuxi.channel.extensions.farcaster.defaults import DEDUPE_MAX_TRACKED, DEDUPE_TTL_S class FarcasterDeduplicator: def __init__(self): self._seen: OrderedDict[str, float] = OrderedDict() def is_duplicate(self, msg_id: str) -> bool: self._evict_expired() if msg_id in self._seen: return True self._seen[msg_id] = time.time() self._trim() return False def reset(self) -> None: self._seen.clear() def _evict_expired(self) -> None: now = time.time() expired = [k for k, v in self._seen.items() if now - v > DEDUPE_TTL_S] for key in expired: self._seen.pop(key, None) def _trim(self) -> None: while len(self._seen) > DEDUPE_MAX_TRACKED: self._seen.popitem(last=False)