summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJay Hutchinson <jlhutch@gmail.com>2015-03-24 13:15:47 -0500
committerJay Hutchinson <jlhutch@gmail.com>2015-03-24 13:15:47 -0500
commiteca02544df4153deed1199af06ccdcdd51bd0f87 (patch)
tree04bb5fa063ccfeb8c32bfdf92ffd124a1767def5
parentb1a76a88ad56f41f71231ade3533c416d814a57f (diff)
downloadpylru-eca02544df4153deed1199af06ccdcdd51bd0f87.tar.gz
Fixes #13, a bug in lrudecorator.v1.0.9
-rw-r--r--pylru.py18
-rw-r--r--setup.py2
2 files changed, 17 insertions, 3 deletions
diff --git a/pylru.py b/pylru.py
index eef0593..e69cadb 100644
--- a/pylru.py
+++ b/pylru.py
@@ -535,8 +535,22 @@ import functools
class lrudecorator(object):
def __init__(self, size):
- self.size = size
+ self.cache = lrucache(size)
def __call__(self, func):
- wrapper = FunctionCacheManager(func, self.size)
+ def wrapper(*args, **kwargs):
+ kwtuple = tuple((key, kwargs[key]) for key in sorted(kwargs.keys()))
+ key = (args, kwtuple)
+ try:
+ return self.cache[key]
+ except KeyError:
+ pass
+
+ value = func(*args, **kwargs)
+ self.cache[key] = value
+ return value
+
+ wrapper.cache = self.cache
+ wrapper.size = self.cache.size
+ wrapper.clear = self.cache.clear
return functools.update_wrapper(wrapper, func)
diff --git a/setup.py b/setup.py
index c7d7f69..66d441c 100644
--- a/setup.py
+++ b/setup.py
@@ -2,7 +2,7 @@ from distutils.core import setup
setup(
name = "pylru",
- version = "1.0.8",
+ version = "1.0.9",
py_modules=['pylru'],
description = "A least recently used (LRU) cache implementation",
author = "Jay Hutchinson",