Source code for nlp_shap.runtime.store

"""Hot LRU cache for coalition generation results."""

from __future__ import annotations

from collections import OrderedDict
from dataclasses import dataclass, field


[docs] @dataclass class HotResultStore: """In-memory LRU store for recently generated coalition outputs.""" maxsize: int = 128 """Maximum number of coalition results retained in memory.""" _values: OrderedDict[str, str] = field(default_factory=OrderedDict) """LRU mapping from coalition key to generated text."""
[docs] def get(self, coalition_key: str) -> str | None: """Return a cached generation or ``None`` when absent.""" if coalition_key not in self._values: return None self._values.move_to_end(coalition_key) return self._values[coalition_key]
[docs] def put(self, coalition_key: str, generation_text: str) -> None: """Insert or refresh a cached generation result.""" if coalition_key in self._values: self._values.move_to_end(coalition_key) self._values[coalition_key] = generation_text while len(self._values) > self.maxsize: self._values.popitem(last=False)
def __len__(self) -> int: """Return the number of cached coalition results.""" return len(self._values)