Coverage for /home/admin/Documents/AI/applications/lexigram-dev/lexigram/experimental/ai/lexigram-ai-rag/src/lexigram/ai/rag/query/__init__.py: 87%

15 statements  

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

1from __future__ import annotations 

2 

3from typing import TYPE_CHECKING, Any 

4 

5if TYPE_CHECKING: 

6 from lexigram.ai.rag.query.base import ( 

7 AbstractQueryTransformer, 

8 TransformationConfig, 

9 TransformationStrategy, 

10 TransformedQuery, 

11 ) 

12 from lexigram.ai.rag.query.pipeline import TransformationPipeline 

13 from lexigram.ai.rag.query.transformers import ( 

14 CustomQueryTransformer, 

15 HyDEGenerator, 

16 MultiQueryGenerator, 

17 QueryExpander, 

18 QueryRewriter, 

19 create_transformer, 

20 ) 

21 

22_LAZY_IMPORTS = { 

23 "TransformationStrategy": ".base", 

24 "TransformedQuery": ".base", 

25 "QueryTransformer": ".base", 

26 "TransformationConfig": ".base", 

27 "QueryExpander": ".transformers", 

28 "MultiQueryGenerator": ".transformers", 

29 "HyDEGenerator": ".transformers", 

30 "QueryRewriter": ".transformers", 

31 "CustomQueryTransformer": ".transformers", 

32 "create_transformer": ".transformers", 

33 "TransformationPipeline": ".pipeline", 

34} 

35 

36 

37def __getattr__(name: str) -> Any: 

38 if name in _LAZY_IMPORTS: 

39 import importlib 

40 

41 module_path = _LAZY_IMPORTS[name] 

42 module = importlib.import_module(module_path, __package__) 

43 value = getattr(module, name) 

44 globals()[name] = value 

45 return value 

46 raise AttributeError(f"module {__name__} has no attribute {name}") 

47 

48 

49def __dir__() -> list[str]: 

50 return list(_LAZY_IMPORTS.keys()) 

51 

52 

53__all__ = list(_LAZY_IMPORTS.keys())