diff options
author | Tres Seaver <tseaver@palladion.com> | 2012-07-05 09:30:56 -0400 |
---|---|---|
committer | Tres Seaver <tseaver@palladion.com> | 2012-07-05 09:30:56 -0400 |
commit | ed1070a070014ab94d2935b59ed0bfcdb2db516d (patch) | |
tree | 4f6cf7a606a42b5328d62e6c70e0c12712b8c315 | |
parent | 62e76828195486bb040866618decfe2622923fe6 (diff) | |
download | repoze-lru-ed1070a070014ab94d2935b59ed0bfcdb2db516d.tar.gz |
Allow 'clear' to take multiple names.
-rw-r--r-- | repoze/lru/__init__.py | 16 | ||||
-rw-r--r-- | repoze/lru/tests.py | 17 |
2 files changed, 24 insertions, 9 deletions
diff --git a/repoze/lru/__init__.py b/repoze/lru/__init__.py index 7426d3b..8ac2415 100644 --- a/repoze/lru/__init__.py +++ b/repoze/lru/__init__.py @@ -358,15 +358,13 @@ class CacheMaker(object): cache = self._cache[name] = ExpiringLRUCache(maxsize, timeout) return lru_cache(maxsize, cache, timeout) - def clear(self, name=None): - """Clear the given cache. + def clear(self, *names): + """Clear the given cache(s). - If 'name' is not passed, clear all caches. + If no 'names' are passed, clear all caches. """ - if name is None: - to_clear = self._cache.keys() - else: - to_clear = [name] + if len(names) == 0: + names = self._cache.keys() - for cache_name in to_clear: - self._cache[cache_name].clear() + for name in names: + self._cache[name].clear() diff --git a/repoze/lru/tests.py b/repoze/lru/tests.py index 611c0d4..89dd22d 100644 --- a/repoze/lru/tests.py +++ b/repoze/lru/tests.py @@ -627,6 +627,23 @@ class CacherMaker(unittest.TestCase): self.assertEqual(len(maker._cache['one'].data), 0) self.assertEqual(len(maker._cache['two'].data), 10) + def test_clear_with_multiple_names(self): + maker = self._makeOne(maxsize=10) + one = maker.lrucache(name='one')(_adder) + two = maker.lrucache(name='two')(_adder) + three = maker.lrucache(name='three')(_adder) + for i in range(100): + _ = one(i) + _ = two(i) + _ = three(i) + self.assertEqual(len(maker._cache['one'].data), 10) + self.assertEqual(len(maker._cache['two'].data), 10) + self.assertEqual(len(maker._cache['three'].data), 10) + maker.clear('one', 'three') + self.assertEqual(len(maker._cache['one'].data), 0) + self.assertEqual(len(maker._cache['two'].data), 10) + self.assertEqual(len(maker._cache['three'].data), 0) + def test_expiring(self): size = 10 timeout = 10 |