diff --git a/diskcache/persistent.py b/diskcache/persistent.py index 522bb74..7b09cd9 100644 --- a/diskcache/persistent.py +++ b/diskcache/persistent.py @@ -136,6 +136,7 @@ def maxlen(self, value): """Set max length of the deque. Pops items from left while length greater than max. + Set to None to remove the length limit. >>> deque = Deque() >>> deque.extendleft('abcde') @@ -146,7 +147,7 @@ def maxlen(self, value): :param value: max length """ - self._maxlen = value + self._maxlen = float('inf') if value is None else value with self._cache.transact(retry=True): while len(self._cache) > self._maxlen: self._popleft() diff --git a/tests/test_deque.py b/tests/test_deque.py index f997a86..c75cfcc 100644 --- a/tests/test_deque.py +++ b/tests/test_deque.py @@ -312,3 +312,14 @@ def test_peek(deque): assert len(deque) == 1 assert deque.peek() == value assert len(deque) == 1 + + +def test_maxlen_can_be_reset_to_unlimited(tmp_path): + with dc.Cache(str(tmp_path), eviction_policy='none') as cache: + deque = dc.Deque.fromcache(cache, 'abc', maxlen=3) + + deque.maxlen = None + + deque.extend('def') + assert list(deque) == list('abcdef') + assert deque.maxlen == float('inf')