summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJay Hutchinson <jlhutch@gmail.com>2014-06-12 00:49:18 -0500
committerJay Hutchinson <jlhutch@gmail.com>2014-06-12 00:49:18 -0500
commitd24d9d098ab2a992d15a7cc24e0c8fe2290823f9 (patch)
treedadea579a7624a8094700e3b9e924817e08a8d60
parent387dcfbc5de88f7f9a0b961f0330ccd847628a42 (diff)
downloadpylru-d24d9d098ab2a992d15a7cc24e0c8fe2290823f9.tar.gz
Added kwargs support for lrudecorator and a few small fixes.v1.0.6
-rw-r--r--pylru.py30
-rw-r--r--setup.py2
-rw-r--r--test.py4
3 files changed, 27 insertions, 9 deletions
diff --git a/pylru.py b/pylru.py
index 13aba67..1d77036 100644
--- a/pylru.py
+++ b/pylru.py
@@ -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
diff --git a/setup.py b/setup.py
index 6491216..5c99196 100644
--- a/setup.py
+++ b/setup.py
@@ -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",
diff --git a/test.py b/test.py
index 2cccf25..7a4842f 100644
--- a/test.py
+++ b/test.py
@@ -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