borgbackup/borg/lrucache.py
Thomas Waldmann 0580f2b4eb style and cosmetic fixes, no semantic changes
use simpler super() syntax of python 3.x

remove fixed errors/warnings' codes from setup.cfg flake8 configuration

fix file exclusion list for flake8
2015-07-11 18:31:49 +02:00

42 lines
1.1 KiB
Python

class LRUCache(dict):
def __init__(self, capacity):
super().__init__()
self._lru = []
self._capacity = capacity
def __setitem__(self, key, value):
try:
self._lru.remove(key)
except ValueError:
pass
self._lru.append(key)
while len(self._lru) > self._capacity:
del self[self._lru[0]]
return super().__setitem__(key, value)
def __getitem__(self, key):
try:
self._lru.remove(key)
self._lru.append(key)
except ValueError:
pass
return super().__getitem__(key)
def __delitem__(self, key):
try:
self._lru.remove(key)
except ValueError:
pass
return super().__delitem__(key)
def pop(self, key, default=None):
try:
self._lru.remove(key)
except ValueError:
pass
return super().pop(key, default)
def _not_implemented(self, *args, **kw):
raise NotImplementedError
popitem = setdefault = update = _not_implemented