summaryrefslogtreecommitdiff
path: root/sqlplain/memoize.py
diff options
context:
space:
mode:
Diffstat (limited to 'sqlplain/memoize.py')
-rw-r--r--sqlplain/memoize.py40
1 files changed, 0 insertions, 40 deletions
diff --git a/sqlplain/memoize.py b/sqlplain/memoize.py
deleted file mode 100644
index 45e0f18..0000000
--- a/sqlplain/memoize.py
+++ /dev/null
@@ -1,40 +0,0 @@
-from decorator import decorator
-
-class Memoize(object):
-
- registry = []
-
- @classmethod
- def clear(cls, cachetype=object):
- for func in cls.registry:
- if issubclass(func.cachetype, cachetype):
- func.cache.clear()
-
- def __init__(self, cachetype):
- self.cachetype = cachetype
-
- def call(self, func, *args, **kw):
- if kw:
- key = args, frozenset(kw.iteritems())
- else:
- key = args
- try:
- return func.cache[key]
- except KeyError:
- res = func.cache[key] = func(*args, **kw)
- return res
-
- def __call__(self, func):
- func.cache = {}
- new = decorator(self.call, func)
- new.cachetype = self.cachetype
- self.registry.append(new)
- return new
-
-memoize = Memoize(object)
-
-if __name__ == '__main__': # test
-
- @memoize
- def f():
- return 1