betty.functools module#
Provide functional programming utilities.
- class betty.functools.CallableDecorator#
Bases:
Generic[P,ReturnT,DecoratedP,DecoratedReturnT]An object capable of decorating a callable.
- __init__(*, callable_decorator: DecoratorCallableType[P, ReturnT, DecoratedP, DecoratedReturnT])#
- final class betty.functools.DecoratedCallable#
Bases:
Generic[P,ReturnT]Apply a decorator to a callable.
- __init__(decorator: DecoratorCallableType[P, ReturnT, DecoratedP, DecoratedReturnT], decorated: DecoratedCallableType[DecoratedP, DecoratedReturnT], /)#
- class betty.functools.Do#
Bases:
Generic[DoFP,DoFReturnT]A functional implementation of do-while functionality, with retries and timeouts.
- __init__(do: Callable[DoFP, DoFReturnT | Awaitable[DoFReturnT]], *do_args: DoFP.args, **do_kwargs: DoFP.kwargs)#
- async until(*conditions: Callable[[DoFReturnT], None | bool | Awaitable[None | bool]], retries: int = 5, timeout: int = 300, interval: float = 0.1) DoFReturnT#
Perform the ‘do’ until it succeeds or as long as the given arguments allow.
- Parameters:
timeout – The timeout in seconds.
interval – The interval between ‘loops’ in seconds.
- final class betty.functools.LazyReCallable#
Bases:
GenericA value that can be called multiple times while always returning the exact same value.
The proxied callable will at most be called once.
- __init__(factory: Callable[[], ValueT], /)#
- final class betty.functools.Pipeline#
Bases:
GenericA function pipeline.
Function pipeline let you pipe/chain/link/combine functions into pipelines that take an input value and, if the functions pass, return an output value. Each pipeline may be (re)used as many times as needed.
- __init__(pipe: Pipe[ValueT, ReturnT], /)#
- final class betty.functools.Result#
Bases:
Generic[P,T]Decorate a callable and store its return value or raised exception.
- __init__(target: Callable[P, T], /)#
- result() T#
Get the target’s return value.
If the target raised an exception, calling this method will re-raise the exception.
Bases:
RuntimeErrorA
betty.functools.Result.resultis unavailable.
- betty.functools.map_suppress(raising_map: Callable[[T], U], exception_type: type[BaseException], items: Iterable[T], /) Iterator[U]#
Map values, skipping those for which the application of raising_map raises errors.
- betty.functools.passthrough(value: T, /) T#
Return the value.
- betty.functools.suppress(target: Callable[P, T], *exceptions: type[BaseException]) Callable[P, T | type[Nothing]]#
Return the value, but suppress any errors.
- betty.functools.unique(*values: Iterable[ValueT], key: Callable[[ValueT], Any] | None = None) Iterator[ValueT]#
Yield the first occurrences of values in a sequence.
For the purpose of filtering duplicate values from an iterable, this works similar to
set, except that this class supports non-hashable values. It is therefore slightly slower thanset.