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
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-25 07:19 +0800
1"""Evaluation module for dependency injection."""
3from __future__ import annotations
5from typing import TYPE_CHECKING
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
17if TYPE_CHECKING:
18 from lexigram.ai.evaluation.config import EvaluationConfig
21@module
22class EvaluationModule(Module):
23 """Evaluation module for Lexigram applications.
25 Provides evaluator and harness support for AI model evaluation.
27 Usage::
29 from lexigram.ai.evaluation import EvaluationModule
30 from lexigram.ai.evaluation.config import EvaluationConfig
32 @module(
33 imports=[EvaluationModule.configure(EvaluationConfig(...))]
34 )
35 class AppModule(Module):
36 pass
37 """
39 @classmethod
40 def configure(cls, config: EvaluationConfig | None = None) -> DynamicModule:
41 """Create an EvaluationModule with explicit configuration.
43 Args:
44 config: :class:`~lexigram.ai.evaluation.config.EvaluationConfig` or
45 ``None`` for defaults.
47 Returns:
48 A :class:`~lexigram.di.module.DynamicModule` descriptor.
49 """
50 from lexigram.ai.evaluation.di.provider import EvaluationProvider
52 return DynamicModule(
53 module=cls,
54 providers=[EvaluationProvider(config=config)],
55 exports=[
56 EvaluatorProtocol,
57 EvaluationHarnessProtocol,
58 ExperimentTrackerProtocol,
59 CheckpointStoreProtocol,
60 ],
61 )
63 @classmethod
64 def stub(cls, config: EvaluationConfig | None = None) -> DynamicModule:
65 """Create an EvaluationModule suitable for unit and integration testing.
67 Uses in-memory or no-op evaluator implementations with minimal side
68 effects.
70 Args:
71 config: Optional :class:`~lexigram.ai.evaluation.config.EvaluationConfig`
72 override. Uses safe test defaults when ``None``.
74 Returns:
75 A :class:`~lexigram.di.module.DynamicModule` descriptor.
76 """
77 from lexigram.ai.evaluation.di.provider import EvaluationProvider
79 return DynamicModule(
80 module=cls,
81 providers=[EvaluationProvider(config=config)],
82 exports=[
83 EvaluatorProtocol,
84 EvaluationHarnessProtocol,
85 ExperimentTrackerProtocol,
86 CheckpointStoreProtocol,
87 ],
88 )
91__all__ = ["EvaluationModule"]