pyiter.type_guard

 1from typing import Callable, Iterable, Iterator
 2import sys
 3from .transform import Transform, T, U
 4
 5if sys.version_info < (3, 10):
 6    from typing_extensions import TypeGuard
 7else:
 8    from typing import TypeGuard
 9
10
11class TypeGuardTransform(Transform[T, U]):
12    """A transform that applies type guard to each item of the iterable."""
13
14    def __init__(self, iter: Iterable[T], type_guard: Callable[[T], TypeGuard[U]]):
15        super().__init__(iter)
16        self.type_guard = type_guard
17
18    def __do_iter__(self) -> Iterator[U]:
19        for i in self.iter:
20            if self.type_guard(i):
21                yield i
class TypeGuardTransform(pyiter.transform.Transform[~T, ~U]):
12class TypeGuardTransform(Transform[T, U]):
13    """A transform that applies type guard to each item of the iterable."""
14
15    def __init__(self, iter: Iterable[T], type_guard: Callable[[T], TypeGuard[U]]):
16        super().__init__(iter)
17        self.type_guard = type_guard
18
19    def __do_iter__(self) -> Iterator[U]:
20        for i in self.iter:
21            if self.type_guard(i):
22                yield i

A transform that applies type guard to each item of the iterable.

type_guard