Configuration Loader
The configuration loader implements hierarchical configuration loading from multiple sources.
Configuration Loader Class
- class rmcp.config.loader.ConfigLoader[source]
Bases:
objectHandles loading and merging configuration from multiple sources.
The ConfigLoader implements the hierarchical configuration system for RMCP, automatically discovering and merging configuration from multiple sources in priority order.
- Features:
Configuration caching for performance
Automatic environment variable discovery
JSON schema validation
Detailed error reporting
Type conversion and validation
- Usage:
The loader is typically used as a singleton to ensure consistent configuration across the application:
loader = ConfigLoader() config = loader.load_config()
For custom configuration scenarios:
config = loader.load_config( config_file="/custom/path/config.json", cli_overrides={"debug": True} )
- __init__()[source]
Initialize the configuration loader.
Creates a new configuration loader with empty cache. The cache will be populated on first load_config() call.
- load_config(config_file: str | Path | None = None, overrides: Dict[str, Any] | None = None, validate: bool = True) RMCPConfig[source]
Load configuration from all sources in priority order: 1. Overrides (highest priority) 2. Environment variables 3. Specified config file or auto-discovered files 4. Defaults (lowest priority)
The ConfigLoader automatically discovers and merges configuration from:
Command-line arguments (highest priority)
Environment variables (
RMCP_*prefix)User configuration file (
~/.rmcp/config.json)System configuration file (
/etc/rmcp/config.json)Built-in defaults (lowest priority)
Loading Configuration
Basic Usage
from rmcp.config.loader import ConfigLoader
# Load with default discovery
loader = ConfigLoader()
config = loader.load_config()
# Access configuration values
print(f"HTTP server will bind to {config.http.host}:{config.http.port}")
print(f"R timeout: {config.r.timeout} seconds")
Custom Configuration File
# Load from custom file
config = loader.load_config(config_file="/path/to/custom.json")
CLI Overrides
# Load with CLI overrides
config = loader.load_config(
cli_overrides={
"debug": True,
"http": {"host": "0.0.0.0", "port": 9000},
"r": {"timeout": 300}
}
)
Environment Variable Discovery
Environment variables are automatically discovered and mapped to configuration keys:
RMCP_HTTP_HOST→http.hostRMCP_HTTP_PORT→http.portRMCP_R_TIMEOUT→r.timeoutRMCP_LOG_LEVEL→logging.levelRMCP_DEBUG→debug
File Loading and Validation
Configuration files are validated against a JSON schema to ensure:
Required fields are present
Data types are correct
Values are within valid ranges
Nested structure matches expected format
Error Handling
- exception rmcp.config.loader.ConfigError[source]
Bases:
ExceptionConfiguration-related errors.
Raised when configuration loading, validation, or parsing fails. Provides detailed error messages to help users fix configuration issues.
Configuration errors provide detailed information about:
Which configuration source caused the error
Specific validation failures
Suggestions for fixing the issue
Schema validation details
Utility Functions
These utility functions support the configuration loading process with type conversion, nested dictionary merging, and configuration file discovery.