[docs]@kindeddefflatten(container:KindN[_BindableKind,KindN[_BindableKind,_FirstType,_SecondType,_ThirdType],_SecondType,_ThirdType,],)->KindN[_BindableKind,_FirstType,_SecondType,_ThirdType]:""" Joins two nested containers together. Please, note that it will not join two ``Failure`` for ``Result`` case or two ``Nothing`` for ``Maybe`` case (or basically any two error types) together. .. code:: python >>> from returns.converters import flatten >>> from returns.io import IO >>> from returns.result import Failure, Success >>> assert flatten(IO(IO(1))) == IO(1) >>> assert flatten(Success(Success(1))) == Success(1) >>> assert flatten(Failure(Failure(1))) == Failure(Failure(1)) See also: - https://bit.ly/2sIviUr """returncontainer.bind(identity)
@overloaddefmaybe_to_result(maybe_container:Maybe[_FirstType],)->Result[_FirstType,None]:"""No default case."""@overloaddefmaybe_to_result(maybe_container:Maybe[_FirstType],default_error:_SecondType,)->Result[_FirstType,_SecondType]:"""Default value case."""
[docs]defmaybe_to_result(maybe_container:Maybe[_FirstType],default_error:_SecondType|None=None,)->Result[_FirstType,_SecondType|None]:""" Converts ``Maybe`` container to ``Result`` container. With optional ``default_error`` to be used for ``Failure``'s error value. .. code:: python >>> from returns.maybe import Some, Nothing >>> from returns.result import Failure, Success >>> assert maybe_to_result(Some(1)) == Success(1) >>> assert maybe_to_result(Some(None)) == Success(None) >>> assert maybe_to_result(Nothing) == Failure(None) >>> assert maybe_to_result(Nothing, 'error') == Failure('error') """ifis_successful(maybe_container):returnSuccess(maybe_container.unwrap())returnFailure(default_error)