bcrypt.ctf/bcrypter/lib/result.py

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