Test coverage for vnccollab.common.cache
vnccollab/ | | covered 95% (12 of 287 uncovered) |
common/ | | covered 95% (12 of 287 uncovered) |
cache.py | | covered 100% (0 of 26 uncovered) |
1: from time import time
1: from collections import defaultdict
2: class TimeCacheKey:
"""Helper class for plone.memoize.ram.cache.
1: Memoizes a callable for a time period."""
1: def __init__(self, period, last_time=0):
2: self.period = period
2: self.last_time = defaultdict(int)
1: def __call__(self, method, *args, **kargs):
5: nargs = list(args)
5: nkargs = self._kargs_to_list(kargs)
5: nargs.extend(nkargs)
5: nargs = str(nargs)
5: now = time()
5: last_time = self.last_time[nargs]
5: if now - last_time > self.period:
5: self.last_time[nargs] = now
5: last_time = now
5: return nargs, last_time
1: def _kargs_to_list(self, kargs):
5: lst = []
11: for k, v in sorted(kargs.items()):
6: if type(v) == list:
4: vv = ','.join(sorted(v))
else:
2: vv = v
6: lst.append((k, vv))
5: return lst