continued reorganisation
This commit is contained in:
parent
6f8a7322f2
commit
0a2d9a5694
22 changed files with 190 additions and 61 deletions
26
bcrypter/lib/result.py
Normal file
26
bcrypter/lib/result.py
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue