ó
    pyüiI  ã                   ó`   • S r SSKrSSKJr  SSKJr  \" S5      rS\\   S\S\\\      4S	 jrg)
z9Contains a utility to iterate by chunks over an iterator.é    N)ÚIterable)ÚTypeVarÚTÚiterableÚ
chunk_sizeÚreturnc              #   ó  #   • [        U[        5      (       a  US::  a  [        S5      e[        U 5      n  [	        U5      n[        R                  " U4[        R                  " X!S-
  5      5      v •  M?  ! [
         a     gf = f7f)a  Iterates over an iterator chunk by chunk.

Taken from https://stackoverflow.com/a/8998040.
See also https://github.com/huggingface/huggingface_hub/pull/920#discussion_r938793088.

Args:
    iterable (`Iterable`):
        The iterable on which we want to iterate.
    chunk_size (`int`):
        Size of the chunks. Must be a strictly positive integer (e.g. >0).

Example:

```python
>>> from huggingface_hub.utils import chunk_iterable

>>> for items in chunk_iterable(range(17), chunk_size=8):
...     print(items)
# [0, 1, 2, 3, 4, 5, 6, 7]
# [8, 9, 10, 11, 12, 13, 14, 15]
# [16] # smaller last chunk
```

Raises:
    [`ValueError`](https://docs.python.org/3/library/exceptions.html#ValueError)
        If `chunk_size` <= 0.

> [!WARNING]
> The last chunk can be smaller than `chunk_size`.
r   z6`chunk_size` must be a strictly positive integer (>0).Né   )	Ú
isinstanceÚintÚ
ValueErrorÚiterÚnextÚStopIterationÚ	itertoolsÚchainÚislice)r   r   ÚiteratorÚ	next_items       Ú_/home/mande/repo/quber/.venv/lib/python3.13/site-packages/huggingface_hub/utils/_chunk_utils.pyÚchunk_iterabler      s}   é € ô> �j¤#×&Ñ&¨*¸«/ÜÐQÓRÐRä�H‹~€HØ
ð	Ü˜X›ˆIô �oŠo˜y˜l¬I×,<Ò,<¸XÐTUÁ~Ó,VÓWÒWñ øô ó 	Ùð	üs(   ‚3B¶A4 Á3BÁ4
BÁ>BÂ BÂB)	Ú__doc__r   Úcollections.abcr   Útypingr   r   r   r   © ó    r   Ú<module>r      sK   ðñ @ã Ý $Ý ñ ˆCƒL€ð(X˜X a™[ð (X°cð (X¸hÀxÐPQÁ{Ñ>Sõ (Xr   