diff options
author | Jay Hutchinson <jlhutch@gmail.com> | 2014-06-12 00:49:18 -0500 |
---|---|---|
committer | Jay Hutchinson <jlhutch@gmail.com> | 2014-06-12 00:49:18 -0500 |
commit | d24d9d098ab2a992d15a7cc24e0c8fe2290823f9 (patch) | |
tree | dadea579a7624a8094700e3b9e924817e08a8d60 | |
parent | 387dcfbc5de88f7f9a0b961f0330ccd847628a42 (diff) | |
download | pylru-d24d9d098ab2a992d15a7cc24e0c8fe2290823f9.tar.gz |
Added kwargs support for lrudecorator and a few small fixes.v1.0.6
-rw-r--r-- | pylru.py | 30 | ||||
-rw-r--r-- | setup.py | 2 | ||||
-rw-r--r-- | test.py | 4 |
3 files changed, 27 insertions, 9 deletions
@@ -101,8 +101,10 @@ class lrucache(object): def get(self, key, default=None): """Get an item - return default (None) if not present""" - try: return self[key] - except KeyError: return default + try: + return self[key] + except KeyError: + return default def __setitem__(self, key, value): # First, see if any value is stored under 'key' in the cache already. @@ -327,6 +329,13 @@ class WriteThroughCacheManager(object): self.cache[key] = value return value + def get(self, key, default=None): + """Get an item - return default (None) if not present""" + try: + return self[key] + except KeyError: + return default + def __setitem__(self, key, value): # Add the key/value pair to the cache and store. self.cache[key] = value @@ -412,6 +421,13 @@ class WriteBackCacheManager(object): self.cache[key] = value return value + def get(self, key, default=None): + """Get an item - return default (None) if not present""" + try: + return self[key] + except KeyError: + return default + def __setitem__(self, key, value): # Add the key/value pair to the cache. self.cache[key] = value @@ -502,13 +518,15 @@ class lrudecorator(object): self.cache = lrucache(size) def __call__(self, func): - def wrapped(*args): # XXX What about kwargs + def wrapped(*args, **kwargs): + kwtuple = tuple((key, kwargs[key]) for key in sorted(kwargs.keys())) + key = (args, kwtuple) try: - return self.cache[args] + return self.cache[key] except KeyError: pass - value = func(*args) - self.cache[args] = value + value = func(*args, **kwargs) + self.cache[key] = value return value return wrapped @@ -2,7 +2,7 @@ from distutils.core import setup setup( name = "pylru", - version = "1.0.5", + version = "1.0.6", py_modules=['pylru'], description = "A least recently used (LRU) cache implementation", author = "Jay Hutchinson", @@ -213,13 +213,13 @@ def wraptest3(): assert p == q -@lrudecorator(25) +@lrudecorator(100) def square(x): return x*x def testDecorator(): for i in range(1000): - x = random.randint(0, 1493) + x = random.randint(0, 200) assert square(x) == x*x |