diff options
| author | Barry Warsaw | 2016-01-10 20:55:27 -0500 |
|---|---|---|
| committer | Barry Warsaw | 2016-01-10 20:55:27 -0500 |
| commit | 79666070fa22a902184c110e2f4d8e1132a412f5 (patch) | |
| tree | 34e63ae3aaf77ce242c91ef77609f2177e6ab27f | |
| parent | 298c596f96e7239830a3d207971ac3091d6dbcb8 (diff) | |
| download | mailman-79666070fa22a902184c110e2f4d8e1132a412f5.tar.gz mailman-79666070fa22a902184c110e2f4d8e1132a412f5.tar.zst mailman-79666070fa22a902184c110e2f4d8e1132a412f5.zip | |
| -rw-r--r-- | src/mailman/utilities/queries.py | 10 | ||||
| -rw-r--r-- | src/mailman/utilities/tests/test_queries.py | 4 |
2 files changed, 10 insertions, 4 deletions
diff --git a/src/mailman/utilities/queries.py b/src/mailman/utilities/queries.py index fa8cb04aa..1a35e35fe 100644 --- a/src/mailman/utilities/queries.py +++ b/src/mailman/utilities/queries.py @@ -35,7 +35,6 @@ class QuerySequence(Sequence): def __init__(self, query=None): super().__init__() self._query = query - self._cached_results = None def __len__(self): return (0 if self._query is None else self._query.count()) @@ -43,6 +42,9 @@ class QuerySequence(Sequence): def __getitem__(self, index): if self._query is None: raise IndexError('index out of range') - if self._cached_results is None: - self._cached_results = list(self._query) - return self._cached_results[index] + return self._query[index] + + def __iter__(self): + if self._query is None: + return [] + yield from self._query diff --git a/src/mailman/utilities/tests/test_queries.py b/src/mailman/utilities/tests/test_queries.py index 6281a9f9b..39ab7de61 100644 --- a/src/mailman/utilities/tests/test_queries.py +++ b/src/mailman/utilities/tests/test_queries.py @@ -33,3 +33,7 @@ class TestQueries(unittest.TestCase): def test_index_error(self): query = QuerySequence(None) self.assertRaises(IndexError, getitem, query, 1) + + def test_iterate_with_none(self): + query = QuerySequence(None) + self.assertEqual(list(query), []) |
