Limited size mapping, evicting the least recently looked-up key when full
| 90 | |
| 91 | |
| 92 | class LRU(UserDict[K, V]): |
| 93 | """Limited size mapping, evicting the least recently looked-up key when full""" |
| 94 | |
| 95 | def __init__(self, maxsize: float) -> None: |
| 96 | super().__init__() |
| 97 | self.data = OrderedDict() |
| 98 | self.maxsize = maxsize |
| 99 | |
| 100 | def __getitem__(self, key: K) -> V: |
| 101 | value = super().__getitem__(key) |
| 102 | cast(OrderedDict, self.data).move_to_end(key) |
| 103 | return value |
| 104 | |
| 105 | def __setitem__(self, key: K, value: V) -> None: |
| 106 | if len(self) >= self.maxsize: |
| 107 | cast(OrderedDict, self.data).popitem(last=False) |
| 108 | super().__setitem__(key, value) |
| 109 | |
| 110 | |
| 111 | class _BackendData: |
no outgoing calls
no test coverage detected