Coverage for src / ezqt_app / domain / results / base_result.py: 87.50%

16 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-03-26 07:07 +0000

1# /////////////////////////////////////////////////////////////// 

2# DOMAIN.RESULTS.BASE_RESULT - Generic operation result model 

3# Project: ezqt_app 

4# /////////////////////////////////////////////////////////////// 

5 

6"""Generic typed result model for service orchestration.""" 

7 

8from __future__ import annotations 

9 

10# /////////////////////////////////////////////////////////////// 

11# IMPORTS 

12# /////////////////////////////////////////////////////////////// 

13from dataclasses import dataclass 

14from typing import Generic, TypeVar 

15 

16from .result_error import ResultError 

17 

18T = TypeVar("T") 

19 

20 

21# /////////////////////////////////////////////////////////////// 

22# DATACLASSES 

23# /////////////////////////////////////////////////////////////// 

24@dataclass(slots=True) 

25class BaseResult(Generic[T]): 

26 """Typed generic operation result.""" 

27 

28 success: bool 

29 value: T | None = None 

30 error: ResultError | None = None 

31 

32 @classmethod 

33 def ok(cls, value: T | None = None) -> BaseResult[T]: 

34 """Build a successful result.""" 

35 return cls(success=True, value=value, error=None) 

36 

37 @classmethod 

38 def fail(cls, code: str, message: str) -> BaseResult[T]: 

39 """Build a failed result.""" 

40 return cls( 

41 success=False, value=None, error=ResultError(code=code, message=message) 

42 )