Coverage for src / remedapy / splice.py: 100%
15 statements
« prev ^ index » next coverage.py v7.13.2, created at 2026-02-02 10:52 +0100
« prev ^ index » next coverage.py v7.13.2, created at 2026-02-02 10:52 +0100
1from collections.abc import Callable, Iterable
2from typing import TypeVar, overload
4from .decorator import make_data_last
6T = TypeVar('T')
9@overload
10def splice(items: Iterable[T], start: int, delete_count: int, replacement: Iterable[T], /) -> Iterable[T]: ...
13@overload
14def splice(start: int, delete_count: int, replacement: Iterable[T], /) -> Callable[[Iterable[T]], Iterable[T]]: ...
17@make_data_last
18def splice(items: Iterable[T], start: int, delete_count: int, replacement: Iterable[T], /) -> Iterable[T]:
19 iterable = iter(items)
20 i = 0
21 while i < start:
22 yield next(iterable)
23 i += 1
24 yield from replacement
25 for _ in range(delete_count):
26 next(iterable)
27 yield from iterable