Coverage for src / remedapy / default_to.py: 100%
11 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
2from typing import TypeVar, overload
4from remedapy.local_types import NotSet
6T = TypeVar('T')
7Fallback = TypeVar('Fallback')
10@overload
11def default_to(data: T | None, fallback: Fallback, /) -> T | Fallback: ...
14@overload
15def default_to(fallback: Fallback, /) -> Callable[[T | None], T | Fallback]: ...
18def default_to(
19 first: T | None | Fallback,
20 second: Fallback = NotSet,
21) -> T | Fallback | Callable[[T | None], T | Fallback]:
22 if second is NotSet:
23 return lambda x: default_to(x, first) # pyright: ignore[reportReturnType]
24 data = first
25 fallback = second
26 return data if data is not None else fallback