D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
self
/
root
/
opt
/
hc_python
/
lib
/
python3.12
/
site-packages
/
sentry_sdk
/
Filename :
_lru_cache.py
back
Copy
from typing import TYPE_CHECKING if TYPE_CHECKING: from typing import Any _SENTINEL = object() class LRUCache: def __init__(self, max_size): # type: (int) -> None if max_size <= 0: raise AssertionError(f"invalid max_size: {max_size}") self.max_size = max_size self._data = {} # type: dict[Any, Any] self.hits = self.misses = 0 self.full = False def set(self, key, value): # type: (Any, Any) -> None current = self._data.pop(key, _SENTINEL) if current is not _SENTINEL: self._data[key] = value elif self.full: self._data.pop(next(iter(self._data))) self._data[key] = value else: self._data[key] = value self.full = len(self._data) >= self.max_size def get(self, key, default=None): # type: (Any, Any) -> Any try: ret = self._data.pop(key) except KeyError: self.misses += 1 ret = default else: self.hits += 1 self._data[key] = ret return ret def get_all(self): # type: () -> list[tuple[Any, Any]] return list(self._data.items())