Path 1: 1279 calls (0.66)

Lines (936) list (187) Text.from_ansi.. def (38) [98] (18) [48] (16) list_reverseiterator (14) [3] (10) [6] (7) [28] (6) [14] (4)

None (1279) tuple (1182) (True, 98) (18) (True, 48) (16) (True, 3) (10) (True, 6) (7) (True, 28) (6) (True, 14) (4) (True, 12) (4) (True, 65) (4)

1def loop_last(values: Iterable[T]) -> Iterable[Tuple[bool, T]]:
2    """Iterate and generate a tuple with a flag for last value."""
3    iter_values = iter(values)
4    try:
5        previous_value = next(iter_values)
6    except StopIteration:
7        return
8    for value in iter_values:
9        yield False, previous_value
10        previous_value = value
11    yield True, previous_value
            

Path 2: 655 calls (0.34)

list (314) Lines (183) [22, 17, 5, 10] (22) Text.from_ansi.. def (10) [3, 3] (10) traverse.._traverse.. def ...

tuple (2510) None (655) (False, 22) (43) (False, 17) (35) (False, 5) (31) (True, 5) (27) (False, 0) (24) (True, 10) (22) (True, 0) (20) (True, 3) (13)...

GeneratorExit (1)

1def loop_last(values: Iterable[T]) -> Iterable[Tuple[bool, T]]:
2    """Iterate and generate a tuple with a flag for last value."""
3    iter_values = iter(values)
4    try:
5        previous_value = next(iter_values)
6    except StopIteration:
7        return
8    for value in iter_values:
9        yield False, previous_value
10        previous_value = value
11    yield True, previous_value
            

Path 3: 7 calls (0.0)

[] (6) dict_items (1)

None (7)

StopIteration (7)

1def loop_last(values: Iterable[T]) -> Iterable[Tuple[bool, T]]:
2    """Iterate and generate a tuple with a flag for last value."""
3    iter_values = iter(values)
4    try:
5        previous_value = next(iter_values)
6    except StopIteration:
7        return
8    for value in iter_values:
9        yield False, previous_value
10        previous_value = value
11    yield True, previous_value