Source code for returns.converters

# -*- coding: utf-8 -*-

from typing import TypeVar, overload

from returns.io import IO
from returns.maybe import Maybe
from returns.result import Failure, Result, Success

_ValueType = TypeVar('_ValueType')
_ErrorType = TypeVar('_ErrorType')


[docs]def result_to_maybe( result_container: Result[_ValueType, _ErrorType], ) -> Maybe[_ValueType]: """Converts ``Result`` container to ``Maybe`` container.""" return Maybe.new(result_container.value_or(None))
[docs]def maybe_to_result( maybe_container: Maybe[_ValueType], ) -> Result[_ValueType, None]: """Converts ``Maybe`` container to ``Result`` container.""" inner_value = maybe_container.value_or(None) if inner_value is not None: return Success(inner_value) return Failure(inner_value)
@overload def join(container: IO[IO[_ValueType]]) -> IO[_ValueType]: """Case for ``IO`` container.""" @overload def join(container: Maybe[Maybe[_ValueType]]) -> Maybe[_ValueType]: """Case for ``Maybe`` container.""" @overload def join( container: Result[Result[_ValueType, _ErrorType], _ErrorType], ) -> Result[_ValueType, _ErrorType]: """Case for ``Result`` container."""
[docs]def join(container): """Joins two nested containers together.""" return container._inner_value # noqa: WPS437