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
« prev ^ index » next coverage.py v7.0.1, created at 2022-12-25 06:11 +0000
1from typing import Iterable, Tuple, TypeVar
3T = TypeVar("T")
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
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
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