From e10536c7f59abbb785f092bf83c4ab94c00e31a3 Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Fri, 15 Jul 2022 14:59:30 -0700 Subject: [PATCH] utils.chunks() is now a documented API, closes #451 --- docs/reference.rst | 7 +++++++ sqlite_utils/utils.py | 8 +++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/reference.rst b/docs/reference.rst index abd918a..66b9d38 100644 --- a/docs/reference.rst +++ b/docs/reference.rst @@ -94,3 +94,10 @@ sqlite_utils.utils.TypeTracker .. autoclass:: sqlite_utils.utils.TypeTracker :members: wrap, types + +.. _reference_utils_chunks: + +sqlite_utils.utils.chunks +------------------------- + +.. autofunction:: sqlite_utils.utils.chunks diff --git a/sqlite_utils/utils.py b/sqlite_utils/utils.py index 377f82a..64bba50 100644 --- a/sqlite_utils/utils.py +++ b/sqlite_utils/utils.py @@ -468,7 +468,13 @@ def _compile_code(code, imports, variable="value"): return locals["fn"] -def chunks(sequence, size): +def chunks(sequence: Iterable, size: int) -> Iterable[Iterable]: + """ + Iterate over chunks of the sequence of the given size. + + :param sequence: Any Python iterator + :param size: The size of each chunk + """ iterator = iter(sequence) for item in iterator: yield itertools.chain([item], itertools.islice(iterator, size - 1))