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