summaryrefslogtreecommitdiff
path: root/cache.py
diff options
context:
space:
mode:
authorSylvain <syt@logilab.fr>2007-07-13 17:38:58 +0200
committerSylvain <syt@logilab.fr>2007-07-13 17:38:58 +0200
commit7c9654aed91856da351cb1978b9eb732c270fbc8 (patch)
tree04c6a7f832e697e7b90ee9273cd67972d3589218 /cache.py
parentd63043db9a8c90481f2f10e8f4cf7519fb383cf7 (diff)
downloadlogilab-common-7c9654aed91856da351cb1978b9eb732c270fbc8.tar.gz
pop() implementation
Diffstat (limited to 'cache.py')
-rw-r--r--cache.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/cache.py b/cache.py
index 9e3c994..e41a684 100644
--- a/cache.py
+++ b/cache.py
@@ -17,8 +17,7 @@
deletion of entries.
"""
-__revision__ = '$Id: cache.py,v 1.8 2003-10-31 14:18:31 syt Exp $'
-
+_marker = object()
class Cache:
""" a dictionnary like cache
@@ -78,6 +77,13 @@ class Cache:
del self.data[key]
self._usage.remove(key)
+ def pop(self, value, default=_marker):
+ if value in self.data:
+ self._usage.remove(value)
+ if default is _marker:
+ return self.data.pop(value)
+ return self.data.pop(value, default)
+
def clear(self):
self.data.clear()
self._usage = []
@@ -93,5 +99,4 @@ class Cache:
def has_key(self, key):
return self.data.has_key(key)
-