From 2d6331ec265958de353d35ce3d21d74de157a0cc Mon Sep 17 00:00:00 2001 From: Ryan Grout Date: Thu, 21 Jul 2022 00:06:02 -0500 Subject: [PATCH 1/2] Add efficient consume function --- toolz/utils.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/toolz/utils.py b/toolz/utils.py index 1002c464..18e0c571 100644 --- a/toolz/utils.py +++ b/toolz/utils.py @@ -1,3 +1,11 @@ +from collections import deque + + +def consume(seq): + """Efficently consume an iterable""" + deque(seq, maxlen=0) + + def raises(err, lamda): try: lamda() From fb89c61dbcc16c1ba1c69a0cd12a4b33c80d4c2f Mon Sep 17 00:00:00 2001 From: Ryan Grout Date: Thu, 21 Jul 2022 00:07:50 -0500 Subject: [PATCH 2/2] Add test. --- toolz/tests/test_utils.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/toolz/tests/test_utils.py b/toolz/tests/test_utils.py index e7a0eaba..2004fe6a 100644 --- a/toolz/tests/test_utils.py +++ b/toolz/tests/test_utils.py @@ -1,6 +1,15 @@ -from toolz.utils import raises +from toolz.utils import raises, consume def test_raises(): assert raises(ZeroDivisionError, lambda: 1 / 0) assert not raises(ZeroDivisionError, lambda: 1) + + +def test_consume(): + l = [1, 2, 3] + assert consume(l) is None + il = iter(l) + assert consume(il) is None + assert raises(StopIteration, lambda: next(il)) + assert raises(TypeError, lambda: consume(1))