diff options
Diffstat (limited to 'sqlplain/memoize.py')
-rw-r--r-- | sqlplain/memoize.py | 40 |
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 |