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