Issue 10593: Adopt Nick's suggestion for an lru_cache with maxsize=None.

This commit is contained in:
Raymond Hettinger 2010-12-01 03:45:41 +00:00
parent ed3a7d2d60
commit c79fb0e52d
3 changed files with 79 additions and 26 deletions

View file

@ -586,6 +586,20 @@ class TestLRU(unittest.TestCase):
self.assertEqual(misses, 4)
self.assertEqual(currsize, 2)
def test_lru_with_maxsize_none(self):
@functools.lru_cache(maxsize=None)
def fib(n):
if n < 2:
return n
return fib(n-1) + fib(n-2)
self.assertEqual([fib(n) for n in range(16)],
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610])
self.assertEqual(fib.cache_info(),
functools._CacheInfo(hits=28, misses=16, maxsize=None, currsize=16))
fib.cache_clear()
self.assertEqual(fib.cache_info(),
functools._CacheInfo(hits=0, misses=0, maxsize=None, currsize=0))
def test_main(verbose=None):
test_classes = (
TestPartial,