continued reorganisation

This commit is contained in:
Emile Clark-Boman 2025-06-21 21:29:00 +10:00
parent 6f8a7322f2
commit 0a2d9a5694
22 changed files with 190 additions and 61 deletions

26
bcrypter/lib/result.py Normal file
View file

@ -0,0 +1,26 @@
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