Coverage for /home/admin/Documents/AI/applications/lexigram-dev/lexigram/experimental/ai/lexigram-ai-workers/src/lexigram/ai/workers/module.py: 87%
15 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"""Workers module for Lexigram."""
3from __future__ import annotations
5from typing import TYPE_CHECKING
7from lexigram.contracts.infra.tasks.protocols import TaskWorkerProtocol
8from lexigram.di.module import DynamicModule, Module, module
10if TYPE_CHECKING:
11 from lexigram.ai.workers.config import WorkersConfig
14@module()
15class WorkersModule(Module):
16 """Module for AI background workers.
18 Registers the :class:`~lexigram.ai.workers.di.provider.WorkersProvider`
19 which wires the ingestion, embedding, DLQ, and maintenance workers.
21 Usage::
23 from lexigram.ai.workers.config import WorkersConfig
25 @module(
26 imports=[WorkersModule.configure(WorkersConfig(...))]
27 )
28 class AppModule(Module):
29 pass
30 """
32 @classmethod
33 def configure(
34 cls,
35 config: WorkersConfig | None = None,
36 enable_scheduler: bool = True,
37 ) -> DynamicModule:
38 """Create a WorkersModule with explicit configuration.
40 Args:
41 config: Optional :class:`~lexigram.ai.workers.config.WorkersConfig`.
42 enable_scheduler: Start the background maintenance scheduler that
43 handles DLQ retries and worker health checks. Defaults to
44 ``True``; set to ``False`` to disable all scheduled tasks (e.g.
45 when running in a worker-only process).
47 Returns:
48 A :class:`~lexigram.di.module.DynamicModule` descriptor.
49 """
50 from lexigram.ai.workers.di.provider import WorkersProvider
52 return DynamicModule(
53 module=cls,
54 providers=[
55 WorkersProvider(
56 config=config,
57 enable_scheduler=enable_scheduler,
58 )
59 ],
60 exports=[TaskWorkerProtocol],
61 )
63 @classmethod
64 def stub(cls, config: WorkersConfig | None = None) -> DynamicModule:
65 """Create a WorkersModule suitable for unit and integration testing.
67 Uses in-memory or no-op worker implementations with minimal side
68 effects. The background scheduler is disabled by default to prevent
69 timer interference between tests.
71 Args:
72 config: Optional :class:`~lexigram.ai.workers.config.WorkersConfig`
73 override. Uses safe test defaults when ``None``.
75 Returns:
76 A :class:`~lexigram.di.module.DynamicModule` descriptor.
77 """
78 from lexigram.ai.workers.di.provider import WorkersProvider
80 return DynamicModule(
81 module=cls,
82 providers=[WorkersProvider(config=config, enable_scheduler=False)],
83 exports=[TaskWorkerProtocol],
84 )
87__all__ = ["WorkersModule"]