Coverage for /home/admin/Documents/AI/applications/lexigram-dev/lexigram/experimental/ai/lexigram-ai-evaluation/src/lexigram/ai/evaluation/module.py: 88%

16 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-25 07:19 +0800

1"""Evaluation module for dependency injection.""" 

2 

3from __future__ import annotations 

4 

5from typing import TYPE_CHECKING 

6 

7from lexigram.contracts.ai.evaluation import ( 

8 EvaluationHarnessProtocol, 

9 EvaluatorProtocol, 

10) 

11from lexigram.contracts.ai.experiment import ( 

12 CheckpointStoreProtocol, 

13 ExperimentTrackerProtocol, 

14) 

15from lexigram.di.module import DynamicModule, Module, module 

16 

17if TYPE_CHECKING: 

18 from lexigram.ai.evaluation.config import EvaluationConfig 

19 

20 

21@module 

22class EvaluationModule(Module): 

23 """Evaluation module for Lexigram applications. 

24 

25 Provides evaluator and harness support for AI model evaluation. 

26 

27 Usage:: 

28 

29 from lexigram.ai.evaluation import EvaluationModule 

30 from lexigram.ai.evaluation.config import EvaluationConfig 

31 

32 @module( 

33 imports=[EvaluationModule.configure(EvaluationConfig(...))] 

34 ) 

35 class AppModule(Module): 

36 pass 

37 """ 

38 

39 @classmethod 

40 def configure(cls, config: EvaluationConfig | None = None) -> DynamicModule: 

41 """Create an EvaluationModule with explicit configuration. 

42 

43 Args: 

44 config: :class:`~lexigram.ai.evaluation.config.EvaluationConfig` or 

45 ``None`` for defaults. 

46 

47 Returns: 

48 A :class:`~lexigram.di.module.DynamicModule` descriptor. 

49 """ 

50 from lexigram.ai.evaluation.di.provider import EvaluationProvider 

51 

52 return DynamicModule( 

53 module=cls, 

54 providers=[EvaluationProvider(config=config)], 

55 exports=[ 

56 EvaluatorProtocol, 

57 EvaluationHarnessProtocol, 

58 ExperimentTrackerProtocol, 

59 CheckpointStoreProtocol, 

60 ], 

61 ) 

62 

63 @classmethod 

64 def stub(cls, config: EvaluationConfig | None = None) -> DynamicModule: 

65 """Create an EvaluationModule suitable for unit and integration testing. 

66 

67 Uses in-memory or no-op evaluator implementations with minimal side 

68 effects. 

69 

70 Args: 

71 config: Optional :class:`~lexigram.ai.evaluation.config.EvaluationConfig` 

72 override. Uses safe test defaults when ``None``. 

73 

74 Returns: 

75 A :class:`~lexigram.di.module.DynamicModule` descriptor. 

76 """ 

77 from lexigram.ai.evaluation.di.provider import EvaluationProvider 

78 

79 return DynamicModule( 

80 module=cls, 

81 providers=[EvaluationProvider(config=config)], 

82 exports=[ 

83 EvaluatorProtocol, 

84 EvaluationHarnessProtocol, 

85 ExperimentTrackerProtocol, 

86 CheckpointStoreProtocol, 

87 ], 

88 ) 

89 

90 

91__all__ = ["EvaluationModule"]