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

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.cache.base import CacheType, RAGCacheConfig 

7 from lexigram.ai.rag.cache.keys import CacheKeyBuilder 

8 from lexigram.ai.rag.cache.manager import RAGCache 

9 from lexigram.ai.rag.cache.stats import RAGCacheStats 

10 

11_LAZY_IMPORTS = { 

12 "CacheType": "lexigram.ai.rag.cache.base", 

13 "RAGCacheConfig": "lexigram.ai.rag.cache.base", 

14 "CacheKeyBuilder": "lexigram.ai.rag.cache.keys", 

15 "RAGCacheStats": "lexigram.ai.rag.cache.stats", 

16 "RAGCache": "lexigram.ai.rag.cache.manager", 

17} 

18 

19 

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

21 if name in _LAZY_IMPORTS: 

22 import importlib 

23 

24 module_path = _LAZY_IMPORTS[name] 

25 module = importlib.import_module(module_path, __package__) 

26 value = getattr(module, name) 

27 globals()[name] = value 

28 return value 

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

30 

31 

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

33 return list(_LAZY_IMPORTS.keys()) 

34 

35 

36__all__ = list(_LAZY_IMPORTS.keys())