Coverage for /home/admin/Documents/AI/applications/lexigram-dev/lexigram/experimental/ai/lexigram-ai-observability/src/lexigram/ai/observability/__init__.py: 85%

20 statements  

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

1"""Intelligence monitoring and observability. 

2 

3This module provides tools for monitoring the health, performance, 

4and behavior of the intelligence layer. 

5""" 

6 

7from __future__ import annotations 

8 

9from importlib.metadata import PackageNotFoundError, version 

10from typing import TYPE_CHECKING, Any 

11 

12try: 

13 __version__ = version("lexigram-ai-observability") 

14except PackageNotFoundError: 

15 __version__ = "0.0.0" 

16 

17if TYPE_CHECKING: 

18 from lexigram.ai.observability.callbacks.manager import CallbackManagerImpl 

19 from lexigram.ai.observability.config import ObservabilityConfig 

20 from lexigram.ai.observability.decorators import ( 

21 trace_llm, 

22 trace_rag, 

23 trace_vector, 

24 track_embedding_operation, 

25 track_llm_call, 

26 track_vector_operation, 

27 ) 

28 from lexigram.ai.observability.di.provider import ObservabilityProvider 

29 from lexigram.ai.observability.exceptions import ( 

30 HealthCheckError, 

31 MetricsError, 

32 ObservabilityError, 

33 TracingError, 

34 ) 

35 from lexigram.ai.observability.health import AIHealthMonitor 

36 from lexigram.ai.observability.hooks import ( 

37 AIObservabilityStartedHook, 

38 HealthCheckRunHook, 

39 LLMCallTracedHook, 

40 ) 

41 from lexigram.ai.observability.metrics import ( 

42 AIMetrics, 

43 ) 

44 from lexigram.ai.observability.module import ObservabilityModule 

45 from lexigram.ai.observability.protocols import ( 

46 AIHealthMonitorProtocol, 

47 AIMetricsProtocol, 

48 AITracerProtocol, 

49 ObservabilityProtocol, 

50 ) 

51 from lexigram.ai.observability.tracing import ( 

52 AITracer, 

53 ) 

54 from lexigram.ai.observability.wrappers import ( 

55 ObservableLLMClient, 

56 ObservableVectorStore, 

57 ) 

58 from lexigram.contracts import HealthCheckResult, HealthStatus 

59 

60_LAZY_IMPORTS: dict[str, tuple[str, str]] = { 

61 # --- Callback --- 

62 "CallbackManagerImpl": ( 

63 "lexigram.ai.observability.callback_manager", 

64 "CallbackManagerImpl", 

65 ), 

66 # --- Hooks --- 

67 "AIObservabilityStartedHook": ( 

68 "lexigram.ai.observability.hooks", 

69 "AIObservabilityStartedHook", 

70 ), 

71 "HealthCheckRunHook": ( 

72 "lexigram.ai.observability.hooks", 

73 "HealthCheckRunHook", 

74 ), 

75 "LLMCallTracedHook": ( 

76 "lexigram.ai.observability.hooks", 

77 "LLMCallTracedHook", 

78 ), 

79 # --- Config --- 

80 "ObservabilityConfig": ("lexigram.ai.observability.config", "ObservabilityConfig"), 

81 # --- DI --- 

82 "ObservabilityProvider": ( 

83 "lexigram.ai.observability.di.provider", 

84 "ObservabilityProvider", 

85 ), 

86 "ObservabilityModule": ("lexigram.ai.observability.module", "ObservabilityModule"), 

87 # --- Exceptions --- 

88 "ObservabilityError": ( 

89 "lexigram.ai.observability.exceptions", 

90 "ObservabilityError", 

91 ), 

92 "HealthCheckError": ("lexigram.ai.observability.exceptions", "HealthCheckError"), 

93 "MetricsError": ("lexigram.ai.observability.exceptions", "MetricsError"), 

94 "TracingError": ("lexigram.ai.observability.exceptions", "TracingError"), 

95 # --- Health --- 

96 "AIHealthMonitor": ("lexigram.ai.observability.health", "AIHealthMonitor"), 

97 # --- Metrics --- 

98 "AIMetrics": ("lexigram.ai.observability.metrics", "AIMetrics"), 

99 "track_llm_call": ("lexigram.ai.observability.decorators", "track_llm_call"), 

100 "track_vector_operation": ( 

101 "lexigram.ai.observability.decorators", 

102 "track_vector_operation", 

103 ), 

104 "track_embedding_operation": ( 

105 "lexigram.ai.observability.decorators", 

106 "track_embedding_operation", 

107 ), 

108 # --- Protocols --- 

109 "ObservabilityProtocol": ( 

110 "lexigram.ai.observability.protocols", 

111 "ObservabilityProtocol", 

112 ), 

113 "AITracerProtocol": ("lexigram.ai.observability.protocols", "AITracerProtocol"), 

114 "AIMetricsProtocol": ("lexigram.ai.observability.protocols", "AIMetricsProtocol"), 

115 "AIHealthMonitorProtocol": ( 

116 "lexigram.ai.observability.protocols", 

117 "AIHealthMonitorProtocol", 

118 ), 

119 # --- Tracing --- 

120 "AITracer": ("lexigram.ai.observability.tracing", "AITracer"), 

121 "trace_llm": ("lexigram.ai.observability.decorators", "trace_llm"), 

122 "trace_rag": ("lexigram.ai.observability.decorators", "trace_rag"), 

123 "trace_vector": ("lexigram.ai.observability.decorators", "trace_vector"), 

124 # --- Wrappers --- 

125 "ObservableLLMClient": ( 

126 "lexigram.ai.observability.wrappers", 

127 "ObservableLLMClient", 

128 ), 

129 "ObservableVectorStore": ( 

130 "lexigram.ai.observability.wrappers", 

131 "ObservableVectorStore", 

132 ), 

133 # --- Contracts Re-exports --- 

134 "HealthCheckResult": ("lexigram.contracts", "HealthCheckResult"), 

135 "HealthStatus": ("lexigram.contracts", "HealthStatus"), 

136} 

137 

138 

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

140 """Lazy-load symbols on first access.""" 

141 if name in _LAZY_IMPORTS: 

142 import importlib 

143 

144 module_path, attr_name = _LAZY_IMPORTS[name] 

145 module = importlib.import_module(module_path) 

146 value = getattr(module, attr_name) 

147 globals()[name] = value 

148 return value 

149 raise AttributeError(f"module {__name__!r} has no attribute {name!r}") 

150 

151 

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

153 """Enumerate available attributes for IDE support.""" 

154 return sorted(set(__all__) | set(_LAZY_IMPORTS.keys())) 

155 

156 

157__all__ = [ 

158 "AIHealthMonitor", 

159 "AIHealthMonitorProtocol", 

160 "AIMetrics", 

161 "AIMetricsProtocol", 

162 "AIObservabilityStartedHook", 

163 "AITracer", 

164 "AITracerProtocol", 

165 "CallbackManagerImpl", 

166 "HealthCheckError", 

167 "HealthCheckResult", 

168 "HealthCheckRunHook", 

169 "HealthStatus", 

170 "LLMCallTracedHook", 

171 "MetricsError", 

172 "ObservabilityConfig", 

173 "ObservabilityError", 

174 "ObservabilityModule", 

175 "ObservabilityProtocol", 

176 "ObservabilityProvider", 

177 "ObservableLLMClient", 

178 "ObservableVectorStore", 

179 "TracingError", 

180 "trace_llm", 

181 "trace_rag", 

182 "trace_vector", 

183 "track_embedding_operation", 

184 "track_llm_call", 

185 "track_vector_operation", 

186]