"""Tiny TTL cache (in-memory). Redis can replace it via REDIS_URL later.""" from __future__ import annotations import time from typing import Any class TTLCache: def __init__(self) -> None: self._data: dict[str, tuple[float, Any]] = {} def get(self, key: str) -> Any | None: item = self._data.get(key) if not item: return None exp, value = item if exp < time.time(): self._data.pop(key, None) return None return value def set(self, key: str, value: Any, ttl_s: int) -> None: if len(self._data) > 5000: now = time.time() for k in [k for k, (e, _) in self._data.items() if e < now]: self._data.pop(k, None) self._data[key] = (time.time() + ttl_s, value) cache = TTLCache()