26 lines
758 B
Python
26 lines
758 B
Python
from dataclass import dataclass
|
|
from enum import Enum
|
|
|
|
class ResultState(Enum):
|
|
WARNING,
|
|
SUCCESS,
|
|
FAILURE,
|
|
|
|
@dataclass
|
|
class Result[T]:
|
|
state: ResultState
|
|
value: T | None
|
|
message: str
|
|
|
|
@classmethod
|
|
def warn(cls: Result, message: str, value: T | None = NOne) -> Result:
|
|
cls(ResultState.WARNING, value, message)
|
|
@classmethod
|
|
def succeed(cls: Result, value: T, message: str = 'Ok') -> Result:
|
|
cls(ResultState.SUCCESS, value, message)
|
|
@classmethod
|
|
def fail(cls: Result, message: str, value: T | None = None) -> Result:
|
|
cls(ResultState.WARNING, value, message)
|
|
|
|
def is_ok(self) -> bool: return not self.is_err()
|
|
def is_err(self) -> bool: return self.state == ResultState.FAILURE
|