Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/rich/_loop.py: 30%

33 statements  

« prev     ^ index     » next       coverage.py v7.0.1, created at 2022-12-25 06:11 +0000

1from typing import Iterable, Tuple, TypeVar 

2 

3T = TypeVar("T") 

4 

5 

6def loop_first(values: Iterable[T]) -> Iterable[Tuple[bool, T]]: 

7 """Iterate and generate a tuple with a flag for first value.""" 

8 iter_values = iter(values) 

9 try: 

10 value = next(iter_values) 

11 except StopIteration: 

12 return 

13 yield True, value 

14 for value in iter_values: 

15 yield False, value 

16 

17 

18def loop_last(values: Iterable[T]) -> Iterable[Tuple[bool, T]]: 

19 """Iterate and generate a tuple with a flag for last value.""" 

20 iter_values = iter(values) 

21 try: 

22 previous_value = next(iter_values) 

23 except StopIteration: 

24 return 

25 for value in iter_values: 

26 yield False, previous_value 

27 previous_value = value 

28 yield True, previous_value 

29 

30 

31def loop_first_last(values: Iterable[T]) -> Iterable[Tuple[bool, bool, T]]: 

32 """Iterate and generate a tuple with a flag for first and last value.""" 

33 iter_values = iter(values) 

34 try: 

35 previous_value = next(iter_values) 

36 except StopIteration: 

37 return 

38 first = True 

39 for value in iter_values: 

40 yield first, False, previous_value 

41 first = False 

42 previous_value = value 

43 yield first, True, previous_value