pyiter.merging

 1from typing import Callable, Iterable, Iterator
 2from .transform import Transform, T, O, U
 3
 4
 5# Zipping ?
 6class MergingTransform(Transform[T, U]):
 7    """
 8    Merges two iterables into a single iterable by applying a transformation function to each pair of elements.
 9    """
10
11    def __init__(
12        self,
13        iter: Iterable[T],
14        other_iter: Iterable[O],
15        transform: Callable[[T, O], U] = lambda a, b: (a, b),
16    ):
17        super().__init__(iter)
18        self.other_iter = other_iter
19        self.transform = transform
20
21    def __do_iter__(self) -> Iterator[U]:
22        iter1 = iter(self.iter)
23        iter2 = iter(self.other_iter)
24        while True:
25            try:
26                yield self.transform(next(iter1), next(iter2))
27            except StopIteration:
28                break
class MergingTransform(pyiter.transform.Transform[~T, ~U]):
 7class MergingTransform(Transform[T, U]):
 8    """
 9    Merges two iterables into a single iterable by applying a transformation function to each pair of elements.
10    """
11
12    def __init__(
13        self,
14        iter: Iterable[T],
15        other_iter: Iterable[O],
16        transform: Callable[[T, O], U] = lambda a, b: (a, b),
17    ):
18        super().__init__(iter)
19        self.other_iter = other_iter
20        self.transform = transform
21
22    def __do_iter__(self) -> Iterator[U]:
23        iter1 = iter(self.iter)
24        iter2 = iter(self.other_iter)
25        while True:
26            try:
27                yield self.transform(next(iter1), next(iter2))
28            except StopIteration:
29                break

Merges two iterables into a single iterable by applying a transformation function to each pair of elements.

other_iter
transform