bcrypt.ctf/bcrypter/lib/result.py

27 lines
758 B
Python
Raw Normal View History

2025-06-21 21:29:00 +10:00
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