Coverage for src / remedapy / all_pass.py: 100%
12 statements
« prev ^ index » next coverage.py v7.13.2, created at 2026-02-02 10:52 +0100
« prev ^ index » next coverage.py v7.13.2, created at 2026-02-02 10:52 +0100
1from collections.abc import Callable, Iterable
2from typing import TypeVar, cast, overload
4T = TypeVar('T')
7@overload
8def all_pass(data: T, fns: Iterable[Callable[[T], bool]], /) -> bool: ...
11@overload
12def all_pass(fns: Iterable[Callable[[T], bool]], /) -> Callable[[T], bool]: ...
15def all_pass(
16 data: T | Iterable[Callable[[T], bool]],
17 fns: Iterable[Callable[[T], bool]] | None = None,
18 /,
19) -> bool | Callable[[T], bool]:
20 if fns is None:
21 data = cast(Iterable[Callable[[T], bool]], data)
22 return lambda value: all_pass(value, data)
23 data = cast(T, data)
24 for fn in fns:
25 if not fn(data):
26 return False
27 return True