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

1from collections.abc import Callable, Iterable 

2from typing import TypeVar, overload 

3 

4from .decorator import make_data_last 

5 

6T = TypeVar('T') 

7 

8 

9@overload 

10def splice(items: Iterable[T], start: int, delete_count: int, replacement: Iterable[T], /) -> Iterable[T]: ... 

11 

12 

13@overload 

14def splice(start: int, delete_count: int, replacement: Iterable[T], /) -> Callable[[Iterable[T]], Iterable[T]]: ... 

15 

16 

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