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

1from collections.abc import Callable 

2from typing import TypeVar, overload 

3 

4from remedapy.local_types import NotSet 

5 

6T = TypeVar('T') 

7Fallback = TypeVar('Fallback') 

8 

9 

10@overload 

11def default_to(data: T | None, fallback: Fallback, /) -> T | Fallback: ... 

12 

13 

14@overload 

15def default_to(fallback: Fallback, /) -> Callable[[T | None], T | Fallback]: ... 

16 

17 

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