diff options
Diffstat (limited to 'logilab/common/cache.py')
-rw-r--r-- | logilab/common/cache.py | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/logilab/common/cache.py b/logilab/common/cache.py index c47f481..6b673a2 100644 --- a/logilab/common/cache.py +++ b/logilab/common/cache.py @@ -47,7 +47,7 @@ class Cache(dict): """ Warning : Cache.__init__() != dict.__init__(). Constructor does not take any arguments beside size. """ - assert size >= 0, 'cache size must be >= 0 (0 meaning no caching)' + assert size >= 0, "cache size must be >= 0 (0 meaning no caching)" self.size = size self._usage: List = [] self._lock = Lock() @@ -74,12 +74,13 @@ class Cache(dict): del self._usage[0] self._usage.append(key) else: - pass # key is already the most recently used key + pass # key is already the most recently used key def __getitem__(self, key: _KeyType): value = super(Cache, self).__getitem__(key) self._update_usage(key) return value + __getitem__ = locked(_acquire, _release)(__getitem__) def __setitem__(self, key: _KeyType, item): @@ -87,24 +88,28 @@ class Cache(dict): if self.size > 0: super(Cache, self).__setitem__(key, item) self._update_usage(key) + __setitem__ = locked(_acquire, _release)(__setitem__) def __delitem__(self, key: _KeyType): super(Cache, self).__delitem__(key) self._usage.remove(key) + __delitem__ = locked(_acquire, _release)(__delitem__) def clear(self): super(Cache, self).clear() self._usage = [] + clear = locked(_acquire, _release)(clear) def pop(self, key: _KeyType, default=_marker): if key in self: self._usage.remove(key) - #if default is _marker: + # if default is _marker: # return super(Cache, self).pop(key) return super(Cache, self).pop(key, default) + pop = locked(_acquire, _release)(pop) def popitem(self): @@ -115,5 +120,3 @@ class Cache(dict): def update(self, other): raise NotImplementedError() - - |