Coverage for src/extratools_core/itertools.py: 0%

7 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-04 05:56 -0700

1from collections.abc import Iterable, Sequence 

2from itertools import chain, repeat 

3 

4from toolz.itertoolz import sliding_window 

5 

6 

7def iter_to_grams[T]( 

8 _iter: Iterable[T], 

9 *, 

10 n: int, 

11 pad: T | None = None, 

12) -> Iterable[Sequence[T]]: 

13 if pad is not None: 

14 _iter = chain( 

15 repeat(pad, n - 1), 

16 _iter, 

17 repeat(pad, n - 1), 

18 ) 

19 

20 return sliding_window(n, _iter)