Source code for stdlibx.option.fn.base

 1from __future__ import annotations
 2
 3from functools import partial
 4from typing import TYPE_CHECKING, Callable, TypeVar
 5
 6from stdlibx.option import Option, methods
 7from typing_extensions import TypeVarTuple, Unpack
 8
 9if TYPE_CHECKING:
10    from stdlibx.option._option import Operation
11
12T = TypeVar("T")
13U = TypeVar("U")
14Ts = TypeVarTuple("Ts")
15
16
[docs] 17def is_some_and(func: Callable[[T], bool]) -> Operation[Option[T], bool]: 18 return partial(methods.is_some_and, func=func)
19 20
[docs] 21def is_none_or(func: Callable[[T], bool]) -> Operation[Option[T], bool]: 22 return partial(methods.is_none_or, func=func)
23 24
[docs] 25def expect(msg: str) -> Operation[Option[T], T]: 26 return partial(methods.expect, msg=msg)
27 28
[docs] 29def unwrap() -> Operation[Option[T], T]: 30 return methods.unwrap
31 32
[docs] 33def unwrap_or(default: T) -> Operation[Option[T], T]: 34 return partial(methods.unwrap_or, default=default)
35 36
[docs] 37def unwrap_or_else(func: Callable[[], T]) -> Operation[Option[T], T]: 38 return partial(methods.unwrap_or_else, func=func)
39 40
[docs] 41def map_(func: Callable[[T], U]) -> Operation[Option[T], Option[U]]: 42 return partial(methods.map_, func=func)
43 44
[docs] 45def inspect(func: Callable[[T], None]) -> Operation[Option[T], Option[T]]: 46 return partial(methods.inspect, func=func)
47 48
[docs] 49def map_or(default: U, func: Callable[[T], U]) -> Operation[Option[T], U]: 50 return partial(methods.map_or, default=default, func=func)
51 52
[docs] 53def map_or_else( 54 default: Callable[[], U], func: Callable[[T], U] 55) -> Operation[Option[T], U]: 56 return partial(methods.map_or_else, default=default, func=func)
57 58
[docs] 59def and_(other: Option[U]) -> Operation[Option[T], Option[U]]: 60 return partial(methods.and_, other=other)
61 62
[docs] 63def and_then(func: Callable[[T], Option[U]]) -> Operation[Option[T], Option[U]]: 64 return partial(methods.and_then, func=func)
65 66
[docs] 67def filter_(predicate: Callable[[T], bool]) -> Operation[Option[T], Option[T]]: 68 return partial(methods.filter_, predicate=predicate)
69 70
[docs] 71def or_(default: Option[T]) -> Operation[Option[T], Option[T]]: 72 return partial(methods.or_, default=default)
73 74
[docs] 75def or_else(default: Callable[[], Option[T]]) -> Operation[Option[T], Option[T]]: 76 return partial(methods.or_else, default=default)
77 78
[docs] 79def xor(other: Option[T]) -> Operation[Option[T], Option[T]]: 80 return partial(methods.xor, other=other)
81 82
[docs] 83def flatten() -> Operation[Option[Option[T]], Option[T]]: 84 return methods.flatten
85 86
[docs] 87def zipped( 88 func: Callable[[Unpack[Ts]], Option[U]], 89) -> Operation[Option[tuple[Unpack[Ts]]], Option[tuple[Unpack[Ts], U]]]: 90 return partial(methods.zipped, func=func)