Source code for returns.pipeline

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

from typing import Union

from returns._generated.pipeline.flow import _flow as flow  # noqa: F401
from returns._generated.pipeline.pipe import _pipe as pipe  # noqa: F401
from returns.io import IOResult
from returns.maybe import Maybe
from returns.primitives.exceptions import UnwrapFailedError
from returns.result import Result

from returns._generated.pipeline.pipeline import (  # isort:skip  # noqa: F401
    _pipeline as pipeline,
)

# Logical aliases:
_Unwrapable = Union[Result, Maybe, IOResult]


[docs]def is_successful(container: '_Unwrapable') -> bool: """ Determins if a container was successful or not. We treat container that raise ``UnwrapFailedError`` on ``.unwrap()`` not successful. .. code:: python >>> from returns.maybe import Some, Nothing >>> from returns.result import Failure, Success >>> is_successful(Some(1)) True >>> is_successful(Nothing) False >>> is_successful(Success(1)) True >>> is_successful(Failure(1)) False This function can work with containers that support :class:`returns.primitives.interfaces.Unwrapable` protocol. But only non-lazy containers are supported. """ try: container.unwrap() except UnwrapFailedError: return False else: return True