Skip to main content

ri/
lib.rs

1//! Copyright © 2025-2026 Wenze Wei. All Rights Reserved.
2//!
3//! This file is part of Ri.
4//! The Ri project belongs to the Dunimd Team.
5//!
6//! Licensed under the Apache License, Version 2.0 (the "License");
7//! You may not use this file except in compliance with the License.
8//! You may obtain a copy of the License at
9//!
10//!     http://www.apache.org/licenses/LICENSE-2.0
11//!
12//! Unless required by applicable law or agreed to in writing, software
13//! distributed under the License is distributed on an "AS IS" BASIS,
14//! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15//! See the License for the specific language governing permissions and
16//! limitations under the License.
17
18//! # Ri (Ri) Library
19//! 
20//! This is the main entry point for the Ri library, which provides a comprehensive
21//! middleware service framework for building enterprise-grade backend applications.
22//! 
23//! ## Core Modules
24//! 
25//! Ri is organized into the following modules, providing a comprehensive middleware
26//! service framework for building enterprise-grade backend applications:
27//! - **fs**: Secure file system operations and management
28//! - **log**: Structured logging with tracing integration
29//! - **config**: Multi-source configuration management
30//! - **hooks**: Lifecycle event hooks for modules
31//! - **observability**: Metrics, tracing, and monitoring support
32//! - **device**: Device management and scheduling
33//! - **cache**: Multi-backend cache abstraction
34//! - **queue**: Distributed queue management
35//! - **gateway**: API gateway with load balancing and rate limiting
36//! - **service_mesh**: Service discovery and traffic management
37//! - **auth**: Authentication and authorization mechanisms
38//! 
39//! ## Prelude
40//! 
41//! The `prelude` module re-exports commonly used types and traits for convenient access,
42//! allowing users to import all essential components with a single `use ri::prelude::*;` statement.
43
44/// Core runtime, application builder, and service context
45pub mod core;
46/// Secure file system operations and management
47pub mod fs;
48/// Structured logging with tracing integration
49pub mod log;
50/// Multi-source configuration management
51pub mod config;
52/// Lifecycle event hooks for modules
53pub mod hooks;
54/// Metrics, tracing, and monitoring support
55pub mod observability;
56/// Device management and scheduling
57pub mod device;
58/// Multi-backend cache abstraction
59pub mod cache;
60/// Distributed queue management
61pub mod queue;
62/// API gateway with load balancing and rate limiting
63pub mod gateway;
64/// Service discovery and traffic management
65pub mod service_mesh;
66/// Authentication and authorization mechanisms
67pub mod auth;
68/// Database abstraction layer with multiple backend support
69pub mod database;
70/// Protocol abstraction layer for multiple protocol support
71#[cfg(feature = "protocol")]
72pub mod protocol;
73/// Validation utilities for input validation and data sanitization
74pub mod validation;
75/// Inter-module RPC communication for distributed method calls
76pub mod module_rpc;
77/// gRPC server and client support
78#[cfg(feature = "grpc")]
79pub mod grpc;
80/// WebSocket server and client support
81#[cfg(feature = "websocket")]
82pub mod ws;
83/// Java JNI bindings support
84#[cfg(feature = "java")]
85pub mod java;
86
87/// Common re-exports for convenient access to core functionality
88/// 
89/// This module provides a single import point for all commonly used Ri components,
90/// simplifying application code and reducing the number of import statements.
91/// 
92/// ## Usage
93/// 
94/// ```rust,ignore
95/// use ri::prelude::*;
96/// 
97/// #[tokio::main]
98/// async fn main() -> RiResult<()> {
99///     let app = RiAppBuilder::new()
100///         .with_config("config.yaml")?
101///         .build()?;
102///     
103///     app.run(|ctx| async move {
104///         ctx.logger().info("service", "Ri service started")?;
105///         Ok(())
106///     }).await
107/// }
108/// ```
109/// Process-wide Tokio runtime shared by language bindings (PyO3 and any core
110/// code that must drive async work from a synchronous context). Lazily
111/// initialized on first use; see `py_runtime` module docs.
112pub mod py_runtime;
113
114pub mod prelude {
115    // Re-export commonly used public classes here.
116    // Only RiXxxXxx format classes are exposed in prelude
117    
118    /// Application builder for constructing Ri applications
119    pub use crate::core::{RiAppBuilder, RiAppRuntime};
120    /// Service context providing access to application resources
121    pub use crate::core::RiServiceContext;
122    /// Module traits for extending Ri functionality
123    pub use crate::core::RiModule;
124    /// Error type used throughout Ri
125    pub use crate::core::RiError;
126    /// Result type alias using RiError
127    pub use crate::core::RiResult;
128    
129    /// Lock utilities - Only RiLockError is available in Python
130    /// Note: RiLockResult, RwLockExtensions, MutexExtensions, and from_poison_error
131    /// are Rust-only types and not exposed in Python bindings
132    #[cfg(feature = "pyo3")]
133    pub use crate::core::RiLockError;
134    
135    /// Python module support
136    #[cfg(feature = "pyo3")]
137    pub use crate::core::{RiPythonModule, RiPythonModuleAdapter, RiPythonServiceModule, RiPythonAsyncServiceModule};
138    
139    /// Error chain utilities
140    #[cfg(feature = "pyo3")]
141    pub use crate::core::{RiErrorChain, RiErrorChainIter, RiErrorContext, RiOptionErrorContext};
142    
143    /// Health check types
144    #[cfg(feature = "pyo3")]
145    pub use crate::core::{RiHealthStatus, RiHealthCheckResult, RiHealthCheckConfig, RiHealthReport};
146    
147    /// Service mesh health check types
148    #[cfg(feature = "pyo3")]
149    pub use crate::service_mesh::health_check::{RiHealthCheckType, RiHealthSummary, RiHealthChecker};
150    
151    /// Lifecycle management
152    #[cfg(feature = "pyo3")]
153    pub use crate::core::RiLifecycleObserver;
154    
155    /// Analytics module
156    #[cfg(feature = "pyo3")]
157    pub use crate::core::RiLogAnalyticsModule;
158    
159    /// Secure file system operations
160    pub use crate::fs::RiFileSystem;
161    
162    /// Structured logger with tracing integration
163    pub use crate::log::RiLogger;
164    /// Log configuration structure
165    pub use crate::log::RiLogConfig;
166    /// Log level enum
167    pub use crate::log::RiLogLevel;
168    
169    /// Configuration management
170    pub use crate::config::RiConfig;
171    /// Configuration manager for multi-source configuration
172    pub use crate::config::RiConfigManager;
173    
174    /// Hook bus for managing lifecycle events
175    pub use crate::hooks::RiHookBus;
176    /// Hook event structure
177    pub use crate::hooks::RiHookEvent;
178    /// Hook kind enum
179    pub use crate::hooks::RiHookKind;
180    /// Module lifecycle phase definition
181    pub use crate::hooks::RiModulePhase;
182    
183    /// Main cache module for Ri
184    pub use crate::cache::RiCacheModule;
185    /// Cache configuration structure
186    pub use crate::cache::RiCacheConfig;
187    
188    /// Main queue module for Ri
189    pub use crate::queue::RiQueueModule;
190    /// Queue configuration structure
191    pub use crate::queue::RiQueueConfig;
192    
193    /// Main gateway struct implementing the RiModule trait
194    pub use crate::gateway::RiGateway;
195    /// Configuration for the Ri Gateway
196    pub use crate::gateway::RiGatewayConfig;
197    /// Route definition for API endpoints
198    pub use crate::gateway::RiRoute;
199    /// Router for handling request routing
200    pub use crate::gateway::RiRouter;
201    /// Backend server for load balancing
202    pub use crate::gateway::load_balancer::RiBackendServer;
203    /// Load balancer server statistics
204    pub use crate::gateway::load_balancer::RiLoadBalancerServerStats;
205    /// Load balancer implementation
206    pub use crate::gateway::load_balancer::RiLoadBalancer;
207    /// Load balancing strategy enum
208    pub use crate::gateway::load_balancer::RiLoadBalancerStrategy;
209    
210    /// Main device control module for Ri
211    pub use crate::device::RiDeviceControlModule;
212    /// Configuration for device discovery
213    pub use crate::device::RiDeviceControlConfig;
214    /// Scheduling configuration for device control
215    pub use crate::device::RiDeviceSchedulingConfig;
216    /// Device representation with type, status, and capabilities
217    pub use crate::device::RiDevice;
218    /// Enum defining supported device types
219    pub use crate::device::RiDeviceType;
220    
221    /// Main authentication module for Ri
222    pub use crate::auth::RiAuthModule;
223    /// Configuration for the authentication module
224    pub use crate::auth::RiAuthConfig;
225    
226    /// Main service mesh struct implementing the RiModule trait
227    pub use crate::service_mesh::RiServiceMesh;
228    /// Configuration for the service mesh
229    pub use crate::service_mesh::RiServiceMeshConfig;
230    /// Statistics for the service mesh
231    pub use crate::service_mesh::RiServiceMeshStats;
232    /// Service endpoint information
233    pub use crate::service_mesh::RiServiceEndpoint;
234    /// Service health status enum
235    pub use crate::service_mesh::RiServiceHealthStatus;
236    
237    /// Main observability module for Ri
238    pub use crate::observability::RiObservabilityModule;
239    /// Configuration for the observability module
240    pub use crate::observability::RiObservabilityConfig;
241    /// Distributed tracing implementation
242    pub use crate::observability::RiTracer;
243    /// Metrics collection and aggregation
244    pub use crate::observability::RiMetricsRegistry;
245    
246    /// Database configuration structure
247    pub use crate::database::RiDatabaseConfig;
248    /// Database type enum
249    pub use crate::database::DatabaseType;
250    /// Database connection pool
251    pub use crate::database::RiDatabasePool;
252    /// Database row representation
253    pub use crate::database::RiDBRow;
254    /// Database query result
255    pub use crate::database::RiDBResult;
256    
257    /// Inter-module RPC coordinator
258    pub use crate::module_rpc::RiModuleRPC;
259    /// RPC client for making method calls
260    pub use crate::module_rpc::RiModuleClient;
261    /// RPC endpoint for a module
262    pub use crate::module_rpc::RiModuleEndpoint;
263    /// RPC method call request
264    pub use crate::module_rpc::RiMethodCall;
265    /// RPC method call response
266    pub use crate::module_rpc::RiMethodResponse;
267}
268
269/// Python bindings for Ri
270#[cfg(feature = "pyo3")]
271pub mod py {
272    use pyo3::prelude::*;
273    use pyo3::types::PyModule;
274    use crate::prelude::*;
275    
276    /// Initialize the Python module
277    #[pymodule]
278    pub fn ri(m: &Bound<'_, PyModule>) -> PyResult<()> {
279        // Add core types that implement PyClass
280        m.add_class::<RiAppBuilder>()?;
281        m.add_class::<RiAppRuntime>()?;
282        m.add_class::<RiConfig>()?;
283        m.add_class::<RiConfigManager>()?;
284        m.add_class::<RiError>()?;
285        m.add_class::<RiServiceContext>()?;
286        
287        // Add Python module support
288        m.add_class::<crate::core::module::RiPythonModule>()?;
289        m.add_class::<crate::core::module::RiPythonModuleAdapter>()?;
290        m.add_class::<crate::core::module::RiPythonServiceModule>()?;
291        m.add_class::<crate::core::module::RiPythonAsyncServiceModule>()?;
292        
293        // Add other core types
294        m.add_class::<RiLogger>()?;
295        m.add_class::<RiLogConfig>()?;
296        m.add_class::<RiLogLevel>()?;
297        m.add_class::<RiFileSystem>()?;
298        m.add_class::<RiHookBus>()?;
299        m.add_class::<RiHookEvent>()?;
300        m.add_class::<RiHookKind>()?;
301        m.add_class::<RiModulePhase>()?;
302        
303        // Add lock types
304        m.add_class::<crate::core::RiLockError>()?;
305        
306        // Add health check types
307        m.add_class::<crate::core::RiHealthStatus>()?;
308        m.add_class::<crate::core::RiHealthCheckResult>()?;
309        m.add_class::<crate::core::RiHealthCheckConfig>()?;
310        m.add_class::<crate::core::RiHealthReport>()?;
311        m.add_class::<crate::service_mesh::health_check::RiHealthCheckType>()?;
312        m.add_class::<crate::service_mesh::health_check::RiHealthSummary>()?;
313        m.add_class::<crate::service_mesh::traffic_management::RiTrafficManager>()?;
314        
315        // Add lifecycle types
316        m.add_class::<crate::core::RiLifecycleObserver>()?;
317        
318        // Add analytics types
319        m.add_class::<crate::core::RiLogAnalyticsModule>()?;
320        
321        // Add cache types to main module
322        m.add_class::<crate::cache::RiCacheModule>()?;
323        m.add_class::<crate::cache::RiCacheManager>()?;
324        m.add_class::<crate::cache::RiCacheConfig>()?;
325        m.add_class::<crate::cache::RiCacheBackendType>()?;
326        m.add_class::<crate::cache::RiCachePolicy>()?;
327        m.add_class::<crate::cache::RiCacheStats>()?;
328        m.add_class::<crate::cache::RiCachedValue>()?;
329        m.add_class::<crate::cache::RiCacheEvent>()?;
330        
331        // Add queue types to main module
332        m.add_class::<crate::queue::RiQueueModule>()?;
333        m.add_class::<crate::queue::RiQueueConfig>()?;
334        m.add_class::<crate::queue::RiQueueManager>()?;
335        m.add_class::<crate::queue::RiQueueMessage>()?;
336        m.add_class::<crate::queue::RiQueueStats>()?;
337        m.add_class::<crate::queue::RiQueueBackendType>()?;
338        m.add_class::<crate::queue::RiRetryPolicy>()?;
339        m.add_class::<crate::queue::RiDeadLetterConfig>()?;
340        
341        // Add gateway types to main module
342        m.add_class::<crate::gateway::RiGateway>()?;
343        m.add_class::<crate::gateway::RiGatewayConfig>()?;
344        m.add_class::<crate::gateway::RiRouter>()?;
345        m.add_class::<crate::gateway::RiRoute>()?;
346        m.add_class::<crate::gateway::rate_limiter::RiRateLimiter>()?;
347        m.add_class::<crate::gateway::rate_limiter::RiRateLimitConfig>()?;
348        m.add_class::<crate::gateway::rate_limiter::RiRateLimitStats>()?;
349        m.add_class::<crate::gateway::rate_limiter::RiSlidingWindowRateLimiter>()?;
350        m.add_class::<crate::gateway::circuit_breaker::RiCircuitBreaker>()?;
351        m.add_class::<crate::gateway::circuit_breaker::RiCircuitBreakerConfig>()?;
352        m.add_class::<crate::gateway::circuit_breaker::RiCircuitBreakerState>()?;
353        m.add_class::<crate::gateway::circuit_breaker::RiCircuitBreakerMetrics>()?;
354        
355        // Add load balancer types to main module
356        m.add_class::<crate::gateway::load_balancer::RiBackendServer>()?;
357        m.add_class::<crate::gateway::load_balancer::RiLoadBalancerServerStats>()?;
358        m.add_class::<crate::gateway::load_balancer::RiLoadBalancer>()?;
359        m.add_class::<crate::gateway::load_balancer::RiLoadBalancerStrategy>()?;
360        
361        // Add service mesh types to main module
362        m.add_class::<crate::service_mesh::RiServiceMesh>()?;
363        m.add_class::<crate::service_mesh::RiServiceMeshConfig>()?;
364        m.add_class::<crate::service_mesh::RiServiceDiscovery>()?;
365        m.add_class::<crate::service_mesh::RiServiceInstance>()?;
366        m.add_class::<crate::service_mesh::RiServiceStatus>()?;
367        m.add_class::<crate::service_mesh::RiServiceMeshStats>()?;
368        m.add_class::<crate::service_mesh::RiServiceEndpoint>()?;
369        m.add_class::<crate::service_mesh::RiServiceHealthStatus>()?;
370        m.add_class::<crate::service_mesh::health_check::RiHealthChecker>()?;
371        m.add_class::<crate::service_mesh::RiTrafficRoute>()?;
372        m.add_class::<crate::service_mesh::RiMatchCriteria>()?;
373        m.add_class::<crate::service_mesh::RiRouteAction>()?;
374        m.add_class::<crate::service_mesh::RiWeightedDestination>()?;
375        
376        // Add auth types to main module
377        m.add_class::<crate::auth::RiAuthModule>()?;
378        m.add_class::<crate::auth::RiAuthConfig>()?;
379        m.add_class::<crate::auth::RiJWTManager>()?;
380        m.add_class::<crate::auth::RiJWTClaims>()?;
381        m.add_class::<crate::auth::RiJWTValidationOptions>()?;
382        m.add_class::<crate::auth::RiSessionManager>()?;
383        m.add_class::<crate::auth::RiSession>()?;
384        m.add_class::<crate::auth::RiPermissionManager>()?;
385        m.add_class::<crate::auth::RiOAuthManager>()?;
386        m.add_class::<crate::auth::RiOAuthToken>()?;
387        m.add_class::<crate::auth::RiOAuthUserInfo>()?;
388        m.add_class::<crate::auth::RiOAuthProvider>()?;
389        m.add_class::<crate::auth::RiPermission>()?;
390        m.add_class::<crate::auth::RiRole>()?;
391        m.add_class::<crate::auth::RiJWTRevocationList>()?;
392        m.add_class::<crate::auth::RiRevokedTokenInfo>()?;
393        m.add_class::<crate::auth::RiSecurityManager>()?;
394        
395        // Add observability types to main module
396        m.add_class::<crate::observability::RiObservabilityModule>()?;
397        m.add_class::<crate::observability::RiObservabilityConfig>()?;
398        m.add_class::<crate::observability::RiMetricsRegistry>()?;
399        m.add_class::<crate::observability::RiTracer>()?;
400        m.add_class::<crate::observability::RiMetricType>()?;
401        m.add_class::<crate::observability::RiMetricConfig>()?;
402        m.add_class::<crate::observability::RiMetricSample>()?;
403        m.add_class::<crate::observability::RiMetric>()?;
404        m.add_class::<crate::observability::RiObservabilityData>()?;
405        
406        // Add system metrics collector types (requires system_info feature)
407        #[cfg(feature = "system_info")]
408        {
409            m.add_class::<crate::observability::RiSystemMetricsCollector>()?;
410            m.add_class::<crate::observability::RiSystemMetrics>()?;
411            m.add_class::<crate::observability::RiCPUMetrics>()?;
412            m.add_class::<crate::observability::RiMemoryMetrics>()?;
413            m.add_class::<crate::observability::RiDiskMetrics>()?;
414            m.add_class::<crate::observability::RiNetworkMetrics>()?;
415        }
416        
417        // Add validation types to main module
418        m.add_class::<crate::validation::RiValidationError>()?;
419        m.add_class::<crate::validation::RiValidationResult>()?;
420        m.add_class::<crate::validation::RiValidationSeverity>()?;
421        m.add_class::<crate::validation::RiValidatorBuilder>()?;
422        m.add_class::<crate::validation::RiValidationRunner>()?;
423        m.add_class::<crate::validation::RiSanitizer>()?;
424        m.add_class::<crate::validation::RiSanitizationConfig>()?;
425        m.add_class::<crate::validation::RiSchemaValidator>()?;
426        m.add_class::<crate::validation::RiValidationModule>()?;
427        
428        // Add protocol types to main module
429        #[cfg(feature = "protocol")]
430        {
431            m.add_class::<crate::protocol::RiProtocolManager>()?;
432            m.add_class::<crate::protocol::RiProtocolType>()?;
433            m.add_class::<crate::protocol::RiProtocolConfig>()?;
434            m.add_class::<crate::protocol::RiProtocolStatus>()?;
435            m.add_class::<crate::protocol::RiProtocolStats>()?;
436            m.add_class::<crate::protocol::RiConnectionState>()?;
437            m.add_class::<crate::protocol::RiConnectionStats>()?;
438            m.add_class::<crate::protocol::RiProtocolHealth>()?;
439            m.add_class::<crate::protocol::RiFrame>()?;
440            m.add_class::<crate::protocol::RiFrameHeader>()?;
441            m.add_class::<crate::protocol::RiFrameType>()?;
442            m.add_class::<crate::protocol::RiConnectionInfo>()?;
443            m.add_class::<crate::protocol::RiMessageFlags>()?;
444            m.add_class::<crate::protocol::RiSecurityLevel>()?;
445            m.add_class::<crate::protocol::frames::RiFrameParser>()?;
446            m.add_class::<crate::protocol::frames::RiFrameBuilder>()?;
447        }
448
449        // Add database types to main module
450        m.add_class::<crate::database::RiDatabaseConfig>()?;
451        m.add_class::<crate::database::RiDatabasePool>()?;
452        m.add_class::<crate::database::RiDBRow>()?;
453        m.add_class::<crate::database::RiDBResult>()?;
454        m.add_class::<crate::database::orm::RiPyORMRepository>()?;
455        m.add_class::<crate::database::RiDynamicPoolConfig>()?;
456        m.add_class::<crate::database::RiDatabaseMetrics>()?;
457
458        // Add grpc types to main module
459        #[cfg(all(feature = "grpc", feature = "pyo3"))]
460        {
461            m.add_class::<crate::grpc::RiGrpcConfig>()?;
462            m.add_class::<crate::grpc::RiGrpcStats>()?;
463            m.add_class::<crate::grpc::RiGrpcServiceRegistryPy>()?;
464            m.add_class::<crate::grpc::RiGrpcServerPy>()?;
465            m.add_class::<crate::grpc::RiGrpcClientPy>()?;
466        }
467
468        // Add websocket types to main module
469        #[cfg(all(feature = "websocket", feature = "pyo3"))]
470        {
471            m.add_class::<crate::ws::RiWSServerConfig>()?;
472            m.add_class::<crate::ws::RiWSEvent>()?;
473            m.add_class::<crate::ws::RiWSSessionInfo>()?;
474            m.add_class::<crate::ws::RiWSServerStats>()?;
475            m.add_class::<crate::ws::RiWSPythonHandler>()?;
476            m.add_class::<crate::ws::RiWSSessionManagerPy>()?;
477            m.add_class::<crate::ws::RiWSServerPy>()?;
478            m.add_class::<crate::ws::RiWSClientConfig>()?;
479            m.add_class::<crate::ws::RiWSClientStats>()?;
480            m.add_class::<crate::ws::RiWSClientPy>()?;
481        }
482
483        // Add module_rpc types to main module
484        m.add_class::<crate::module_rpc::RiModuleRPC>()?;
485        m.add_class::<crate::module_rpc::RiModuleClient>()?;
486        m.add_class::<crate::module_rpc::RiModuleEndpoint>()?;
487        m.add_class::<crate::module_rpc::RiMethodCall>()?;
488        m.add_class::<crate::module_rpc::RiMethodResponse>()?;
489        
490        // Add device types to main module
491        m.add_class::<crate::device::RiDeviceControlModule>()?;
492        m.add_class::<crate::device::RiDevice>()?;
493        m.add_class::<crate::device::RiDeviceType>()?;
494        m.add_class::<crate::device::RiDeviceStatus>()?;
495        m.add_class::<crate::device::RiDeviceCapabilities>()?;
496        m.add_class::<crate::device::RiDeviceHealthMetrics>()?;
497        m.add_class::<crate::device::RiDeviceController>()?;
498        m.add_class::<crate::device::RiDeviceConfig>()?;
499        m.add_class::<crate::device::RiDeviceControlConfig>()?;
500        m.add_class::<crate::device::RiDeviceSchedulingConfig>()?;
501        m.add_class::<crate::device::RiNetworkDeviceInfo>()?;
502        m.add_class::<crate::device::RiDiscoveryResult>()?;
503        m.add_class::<crate::device::RiResourceRequest>()?;
504        m.add_class::<crate::device::RiResourceAllocation>()?;
505        m.add_class::<crate::device::RiRequestSlaClass>()?;
506        m.add_class::<crate::device::RiResourceWeights>()?;
507        m.add_class::<crate::device::RiAffinityRules>()?;
508        m.add_class::<crate::device::RiResourcePoolStatus>()?;
509        m.add_class::<crate::device::pool::RiResourcePool>()?;
510        m.add_class::<crate::device::pool::RiResourcePoolConfig>()?;
511        m.add_class::<crate::device::pool::RiResourcePoolStatistics>()?;
512        m.add_class::<crate::device::pool::RiResourcePoolManager>()?;
513        m.add_class::<crate::device::pool::RiConnectionPoolStatistics>()?;
514        m.add_class::<crate::device::scheduler::RiResourceScheduler>()?;
515        m.add_class::<crate::device::scheduler::RiDeviceScheduler>()?;
516        m.add_class::<crate::device::scheduler::RiSchedulingPolicy>()?;
517        m.add_class::<crate::device::scheduler::RiAllocationRecord>()?;
518        m.add_class::<crate::device::scheduler::RiAllocationRequest>()?;
519        m.add_class::<crate::device::scheduler::RiAllocationStatistics>()?;
520        m.add_class::<crate::device::scheduler::RiDeviceTypeStatistics>()?;
521        m.add_class::<crate::device::scheduler::RiSchedulingRecommendation>()?;
522        m.add_class::<crate::device::scheduler::RiSchedulingRecommendationType>()?;
523        m.add_class::<crate::device::RiDeviceDiscoveryEngine>()?;
524        
525        // Add database migration type
526        m.add_class::<crate::database::RiDatabaseMigration>()?;
527        
528        // Create and add submodules
529        create_device_module(m)?;
530        create_cache_module(m)?;
531        create_fs_module(m)?;
532        create_hooks_module(m)?;
533        create_observability_module(m)?;
534        create_queue_module(m)?;
535        create_gateway_module(m)?;
536        create_service_mesh_module(m)?;
537        create_auth_module(m)?;
538        create_database_module(m)?;
539        create_validation_module(m)?;
540        #[cfg(feature = "protocol")]
541        create_protocol_module(m)?;
542        create_grpc_module(m)?;
543        create_ws_module(m)?;
544
545        Ok(())
546    }
547
548    fn create_device_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
549        let m = PyModule::new(parent.py(), "device")?;
550        
551        m.add_class::<crate::device::RiDeviceControlModule>()?;
552        m.add_class::<crate::device::RiDevice>()?;
553        m.add_class::<crate::device::RiDeviceType>()?;
554        m.add_class::<crate::device::RiDeviceStatus>()?;
555        m.add_class::<crate::device::RiDeviceCapabilities>()?;
556        m.add_class::<crate::device::RiDeviceHealthMetrics>()?;
557        m.add_class::<crate::device::RiDeviceController>()?;
558        m.add_class::<crate::device::RiDeviceConfig>()?;
559        m.add_class::<crate::device::RiDeviceControlConfig>()?;
560        m.add_class::<crate::device::RiDeviceSchedulingConfig>()?;
561        m.add_class::<crate::device::RiNetworkDeviceInfo>()?;
562        m.add_class::<crate::device::RiDiscoveryResult>()?;
563        m.add_class::<crate::device::RiResourceRequest>()?;
564        m.add_class::<crate::device::RiResourceAllocation>()?;
565        m.add_class::<crate::device::RiRequestSlaClass>()?;
566        m.add_class::<crate::device::RiResourceWeights>()?;
567        m.add_class::<crate::device::RiAffinityRules>()?;
568        m.add_class::<crate::device::pool::RiResourcePool>()?;
569        m.add_class::<crate::device::pool::RiResourcePoolConfig>()?;
570        m.add_class::<crate::device::pool::RiResourcePoolStatistics>()?;
571        m.add_class::<crate::device::pool::RiResourcePoolManager>()?;
572        m.add_class::<crate::device::pool::RiConnectionPoolStatistics>()?;
573        m.add_class::<crate::device::scheduler::RiResourceScheduler>()?;
574        m.add_class::<crate::device::scheduler::RiDeviceScheduler>()?;
575        m.add_class::<crate::device::scheduler::RiSchedulingPolicy>()?;
576        m.add_class::<crate::device::scheduler::RiAllocationRecord>()?;
577        m.add_class::<crate::device::scheduler::RiAllocationRequest>()?;
578        m.add_class::<crate::device::scheduler::RiAllocationStatistics>()?;
579        m.add_class::<crate::device::scheduler::RiDeviceTypeStatistics>()?;
580        m.add_class::<crate::device::scheduler::RiSchedulingRecommendation>()?;
581        m.add_class::<crate::device::scheduler::RiSchedulingRecommendationType>()?;
582        m.add_class::<crate::device::RiDeviceDiscoveryEngine>()?;
583        
584        parent.add_submodule(&m)?;
585        Ok(())
586    }
587    
588    fn create_cache_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
589        let m = PyModule::new(parent.py(), "cache")?;
590        
591        // Add cache types to the cache module
592        m.add_class::<crate::cache::RiCacheModule>()?;
593        m.add_class::<crate::cache::RiCacheManager>()?;
594        m.add_class::<crate::cache::RiCacheConfig>()?;
595        m.add_class::<crate::cache::RiCacheBackendType>()?;
596        m.add_class::<crate::cache::RiCachePolicy>()?;
597        m.add_class::<crate::cache::RiCacheStats>()?;
598        m.add_class::<crate::cache::RiCachedValue>()?;
599        m.add_class::<crate::cache::RiCacheEvent>()?;
600        
601        parent.add_submodule(&m)?;
602        Ok(())
603    }
604    
605    fn create_fs_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
606        let m = PyModule::new(parent.py(), "fs")?;
607        m.add_class::<crate::fs::RiFileSystem>()?;
608        parent.add_submodule(&m)?;
609        Ok(())
610    }
611    
612    fn create_hooks_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
613        let m = PyModule::new(parent.py(), "hooks")?;
614        m.add_class::<crate::hooks::RiHookKind>()?;
615        m.add_class::<crate::hooks::RiModulePhase>()?;
616        m.add_class::<crate::hooks::RiHookEvent>()?;
617        m.add_class::<crate::hooks::RiHookBus>()?;
618        parent.add_submodule(&m)?;
619        Ok(())
620    }
621    
622    fn create_observability_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
623        let m = PyModule::new(parent.py(), "observability")?;
624        m.add_class::<crate::observability::RiObservabilityModule>()?;
625        m.add_class::<crate::observability::RiObservabilityConfig>()?;
626        m.add_class::<crate::observability::RiObservabilityData>()?;
627        m.add_class::<crate::observability::RiMetricsRegistry>()?;
628        m.add_class::<crate::observability::RiTracer>()?;
629        m.add_class::<crate::observability::RiMetricType>()?;
630        m.add_class::<crate::observability::RiMetricConfig>()?;
631        m.add_class::<crate::observability::RiMetricSample>()?;
632        m.add_class::<crate::observability::RiMetric>()?;
633        #[cfg(feature = "system_info")]
634        {
635            m.add_class::<crate::observability::RiSystemMetricsCollector>()?;
636            m.add_class::<crate::observability::RiSystemMetrics>()?;
637            m.add_class::<crate::observability::RiCPUMetrics>()?;
638            m.add_class::<crate::observability::RiMemoryMetrics>()?;
639            m.add_class::<crate::observability::RiDiskMetrics>()?;
640            m.add_class::<crate::observability::RiNetworkMetrics>()?;
641        }
642        parent.add_submodule(&m)?;
643        Ok(())
644    }
645    
646    fn create_queue_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
647        let m = PyModule::new(parent.py(), "queue")?;
648        m.add_class::<crate::queue::RiQueueModule>()?;
649        m.add_class::<crate::queue::RiQueueConfig>()?;
650        m.add_class::<crate::queue::RiQueueManager>()?;
651        m.add_class::<crate::queue::RiQueueMessage>()?;
652        m.add_class::<crate::queue::RiQueueStats>()?;
653        m.add_class::<crate::queue::RiQueueBackendType>()?;
654        m.add_class::<crate::queue::RiRetryPolicy>()?;
655        m.add_class::<crate::queue::RiDeadLetterConfig>()?;
656        parent.add_submodule(&m)?;
657        Ok(())
658    }
659    
660    fn create_gateway_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
661        let m = PyModule::new(parent.py(), "gateway")?;
662        m.add_class::<crate::gateway::RiGateway>()?;
663        m.add_class::<crate::gateway::RiGatewayConfig>()?;
664        m.add_class::<crate::gateway::RiRoute>()?;
665        m.add_class::<crate::gateway::RiRouter>()?;
666        m.add_class::<crate::gateway::rate_limiter::RiRateLimiter>()?;
667        m.add_class::<crate::gateway::rate_limiter::RiRateLimitConfig>()?;
668        m.add_class::<crate::gateway::rate_limiter::RiRateLimitStats>()?;
669        m.add_class::<crate::gateway::rate_limiter::RiSlidingWindowRateLimiter>()?;
670        m.add_class::<crate::gateway::circuit_breaker::RiCircuitBreaker>()?;
671        m.add_class::<crate::gateway::circuit_breaker::RiCircuitBreakerConfig>()?;
672        m.add_class::<crate::gateway::circuit_breaker::RiCircuitBreakerState>()?;
673        m.add_class::<crate::gateway::circuit_breaker::RiCircuitBreakerMetrics>()?;
674        m.add_class::<crate::gateway::load_balancer::RiBackendServer>()?;
675        m.add_class::<crate::gateway::load_balancer::RiLoadBalancerServerStats>()?;
676        m.add_class::<crate::gateway::load_balancer::RiLoadBalancer>()?;
677        m.add_class::<crate::gateway::load_balancer::RiLoadBalancerStrategy>()?;
678        parent.add_submodule(&m)?;
679        Ok(())
680    }
681    
682    fn create_service_mesh_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
683        let m = PyModule::new(parent.py(), "service_mesh")?;
684        m.add_class::<crate::service_mesh::RiServiceMesh>()?;
685        m.add_class::<crate::service_mesh::RiServiceMeshConfig>()?;
686        m.add_class::<crate::service_mesh::RiServiceDiscovery>()?;
687        m.add_class::<crate::service_mesh::RiServiceInstance>()?;
688        m.add_class::<crate::service_mesh::RiServiceStatus>()?;
689        m.add_class::<crate::service_mesh::RiServiceMeshStats>()?;
690        m.add_class::<crate::service_mesh::RiServiceEndpoint>()?;
691        m.add_class::<crate::service_mesh::RiServiceHealthStatus>()?;
692        m.add_class::<crate::service_mesh::health_check::RiHealthChecker>()?;
693        m.add_class::<crate::service_mesh::health_check::RiHealthSummary>()?;
694        m.add_class::<crate::service_mesh::health_check::RiHealthCheckType>()?;
695        m.add_class::<crate::service_mesh::traffic_management::RiTrafficManager>()?;
696        m.add_class::<crate::service_mesh::traffic_management::RiTrafficRoute>()?;
697        m.add_class::<crate::service_mesh::traffic_management::RiMatchCriteria>()?;
698        m.add_class::<crate::service_mesh::traffic_management::RiRouteAction>()?;
699        m.add_class::<crate::service_mesh::traffic_management::RiWeightedDestination>()?;
700        parent.add_submodule(&m)?;
701        Ok(())
702    }
703    
704    fn create_auth_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
705        let m = PyModule::new(parent.py(), "auth")?;
706        m.add_class::<crate::auth::RiAuthModule>()?;
707        m.add_class::<crate::auth::RiAuthConfig>()?;
708        m.add_class::<crate::auth::RiJWTManager>()?;
709        m.add_class::<crate::auth::RiJWTClaims>()?;
710        m.add_class::<crate::auth::RiJWTValidationOptions>()?;
711        m.add_class::<crate::auth::RiSessionManager>()?;
712        m.add_class::<crate::auth::RiSession>()?;
713        m.add_class::<crate::auth::RiPermissionManager>()?;
714        m.add_class::<crate::auth::RiPermission>()?;
715        m.add_class::<crate::auth::RiRole>()?;
716        m.add_class::<crate::auth::RiOAuthManager>()?;
717        m.add_class::<crate::auth::RiOAuthToken>()?;
718        m.add_class::<crate::auth::RiOAuthUserInfo>()?;
719        m.add_class::<crate::auth::RiOAuthProvider>()?;
720        m.add_class::<crate::auth::RiJWTRevocationList>()?;
721        m.add_class::<crate::auth::RiRevokedTokenInfo>()?;
722        m.add_class::<crate::auth::RiSecurityManager>()?;
723        parent.add_submodule(&m)?;
724        Ok(())
725    }
726    
727    fn create_database_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
728        let m = PyModule::new(parent.py(), "database")?;
729        m.add_class::<crate::database::RiDatabaseConfig>()?;
730        m.add_class::<crate::database::RiDatabasePool>()?;
731        m.add_class::<crate::database::RiDBRow>()?;
732        m.add_class::<crate::database::RiDBResult>()?;
733        m.add_class::<crate::database::RiDynamicPoolConfig>()?;
734        m.add_class::<crate::database::RiDatabaseMetrics>()?;
735        m.add_class::<crate::database::orm::ColumnDefinition>()?;
736        m.add_class::<crate::database::orm::IndexDefinition>()?;
737        m.add_class::<crate::database::orm::ForeignKeyDefinition>()?;
738        m.add_class::<crate::database::orm::TableDefinition>()?;
739        m.add_class::<crate::database::orm::ComparisonOperator>()?;
740        m.add_class::<crate::database::orm::LogicalOperator>()?;
741        m.add_class::<crate::database::orm::Criteria>()?;
742        m.add_class::<crate::database::orm::JoinClause>()?;
743        m.add_class::<crate::database::orm::SortOrder>()?;
744        m.add_class::<crate::database::orm::Pagination>()?;
745        m.add_class::<crate::database::orm::QueryBuilder>()?;
746        m.add_class::<crate::database::orm::JoinType>()?;
747        m.add_class::<crate::database::orm::RiPyORMRepository>()?;
748        parent.add_submodule(&m)?;
749        Ok(())
750    }
751    
752    fn create_validation_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
753        let m = PyModule::new(parent.py(), "validation")?;
754        m.add_class::<crate::validation::RiValidationError>()?;
755        m.add_class::<crate::validation::RiValidationResult>()?;
756        m.add_class::<crate::validation::RiValidationSeverity>()?;
757        m.add_class::<crate::validation::RiValidatorBuilder>()?;
758        m.add_class::<crate::validation::RiValidationRunner>()?;
759        m.add_class::<crate::validation::RiSanitizer>()?;
760        m.add_class::<crate::validation::RiSanitizationConfig>()?;
761        m.add_class::<crate::validation::RiSchemaValidator>()?;
762        m.add_class::<crate::validation::RiValidationModule>()?;
763        parent.add_submodule(&m)?;
764        Ok(())
765    }
766    
767    #[cfg(feature = "protocol")]
768    fn create_protocol_module(_parent: &Bound<'_, PyModule>) -> PyResult<()> {
769        let m = PyModule::new(_parent.py(), "protocol")?;
770        m.add_class::<crate::protocol::RiProtocolManager>()?;
771        m.add_class::<crate::protocol::RiProtocolType>()?;
772        m.add_class::<crate::protocol::RiProtocolConfig>()?;
773        m.add_class::<crate::protocol::RiProtocolStatus>()?;
774        m.add_class::<crate::protocol::RiProtocolStats>()?;
775        m.add_class::<crate::protocol::RiConnectionState>()?;
776        m.add_class::<crate::protocol::RiConnectionStats>()?;
777        m.add_class::<crate::protocol::RiProtocolHealth>()?;
778        m.add_class::<crate::protocol::RiFrame>()?;
779        m.add_class::<crate::protocol::RiFrameHeader>()?;
780        m.add_class::<crate::protocol::RiFrameType>()?;
781        m.add_class::<crate::protocol::RiConnectionInfo>()?;
782        m.add_class::<crate::protocol::RiMessageFlags>()?;
783        m.add_class::<crate::protocol::RiSecurityLevel>()?;
784        m.add_class::<crate::protocol::frames::RiFrameParser>()?;
785        m.add_class::<crate::protocol::frames::RiFrameBuilder>()?;
786        _parent.add_submodule(&m)?;
787        Ok(())
788    }
789    
790    fn create_grpc_module(_parent: &Bound<'_, PyModule>) -> PyResult<()> {
791        #[cfg(all(feature = "grpc", feature = "pyo3"))]
792        {
793            let m = PyModule::new(_parent.py(), "grpc")?;
794            m.add_class::<crate::grpc::RiGrpcConfig>()?;
795            m.add_class::<crate::grpc::RiGrpcStats>()?;
796            m.add_class::<crate::grpc::RiGrpcServiceRegistryPy>()?;
797            m.add_class::<crate::grpc::RiGrpcServerPy>()?;
798            m.add_class::<crate::grpc::RiGrpcClientPy>()?;
799            _parent.add_submodule(&m)?;
800        }
801        #[cfg(not(all(feature = "grpc", feature = "pyo3")))]
802        {
803            let _ = _parent;
804        }
805        Ok(())
806    }
807    
808    fn create_ws_module(_parent: &Bound<'_, PyModule>) -> PyResult<()> {
809        #[cfg(all(feature = "websocket", feature = "pyo3"))]
810        {
811            let m = PyModule::new(_parent.py(), "ws")?;
812            m.add_class::<crate::ws::RiWSServerConfig>()?;
813            m.add_class::<crate::ws::RiWSEvent>()?;
814            m.add_class::<crate::ws::RiWSSessionInfo>()?;
815            m.add_class::<crate::ws::RiWSServerStats>()?;
816            m.add_class::<crate::ws::RiWSPythonHandler>()?;
817            m.add_class::<crate::ws::RiWSSessionManagerPy>()?;
818            m.add_class::<crate::ws::RiWSServerPy>()?;
819            m.add_class::<crate::ws::RiWSClientConfig>()?;
820            m.add_class::<crate::ws::RiWSClientStats>()?;
821            m.add_class::<crate::ws::RiWSClientPy>()?;
822            _parent.add_submodule(&m)?;
823        }
824        #[cfg(not(all(feature = "websocket", feature = "pyo3")))]
825        {
826            let _ = _parent;
827        }
828        Ok(())
829    }
830}