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