mud_server.config
Server configuration management.
This module handles loading and accessing server configuration from multiple sources with a clear priority order:
Environment variables (highest priority) - for containerized deployments
Config file (config/server.ini) - for static deployments
Built-in defaults (lowest priority) - sensible fallbacks
Configuration is loaded once at module import time and cached. The ServerConfig dataclass provides typed access to all settings.
- Usage:
from mud_server.config import config
# Access settings print(config.server.host) print(config.security.cors_origins) print(config.is_production)
- Environment Variable Mapping:
MUD_HOST -> server.host MUD_PORT -> server.port MUD_PRODUCTION -> security.production MUD_CORS_ORIGINS -> security.cors_origins MUD_DB_PATH -> database.path MUD_LOG_LEVEL -> logging.level MUD_SESSION_TTL_MINUTES -> session.ttl_minutes MUD_SESSION_SLIDING_EXPIRATION -> session.sliding_expiration MUD_SESSION_ALLOW_MULTIPLE -> session.allow_multiple_sessions MUD_SESSION_ACTIVE_WINDOW_MINUTES -> session.active_window_minutes MUD_CHAR_DEFAULT_SLOTS -> characters.default_slots MUD_CHAR_MAX_SLOTS -> characters.max_slots
Attributes
Classes
Network server configuration. |
|
Security-related configuration. |
|
Session management configuration. |
|
Database configuration. |
|
Logging configuration. |
|
Rate limiting configuration. |
|
Character slot limits and defaults. |
|
Feature flags. |
|
Multi-world configuration settings. |
|
Complete server configuration. |
|
Context manager for using a temporary test database. |
Functions
Load configuration from all sources with proper priority. |
|
Reload configuration from disk and environment. |
|
Get configuration status for diagnostics. |
|
Print a summary of current configuration to stdout. |
Module Contents
- mud_server.config.PROJECT_ROOT
- mud_server.config.CONFIG_DIR
- mud_server.config.CONFIG_FILE
- mud_server.config.CONFIG_EXAMPLE
- class mud_server.config.SecuritySettings[source]
Security-related configuration.
- docs_enabled: Literal['auto', 'enabled', 'disabled'] = 'auto'
- class mud_server.config.DatabaseSettings[source]
Database configuration.
- property absolute_path: pathlib.Path
Get absolute path to database file.
- class mud_server.config.LoggingSettings[source]
Logging configuration.
- format: Literal['simple', 'detailed', 'json'] = 'detailed'
- class mud_server.config.ServerConfig[source]
Complete server configuration.
This is the main configuration object that aggregates all settings sections. Access via the module-level config singleton.
- server: ServerSettings
- security: SecuritySettings
- session: SessionSettings
- database: DatabaseSettings
- logging: LoggingSettings
- rate_limit: RateLimitSettings
- characters: CharacterSettings
- features: FeatureSettings
- worlds: WorldSettings
- mud_server.config.load_config()[source]
Load configuration from all sources with proper priority.
- Priority (highest wins):
Environment variables
config/server.ini
config/server.example.ini (fallback for development)
Built-in defaults
- Returns:
Fully populated configuration object.
- Return type:
- mud_server.config.reload_config()[source]
Reload configuration from disk and environment.
This updates the module-level config singleton. Use sparingly as it doesn’t update already-running server middleware.
- Returns:
The newly loaded configuration.
- Return type:
- mud_server.config.config
- mud_server.config.get_config_status()[source]
Get configuration status for diagnostics.
Returns a dictionary with configuration source information, useful for debugging and admin dashboards.
- mud_server.config.print_config_summary()[source]
Print a summary of current configuration to stdout.
- class mud_server.config.use_test_database(db_path)[source]
Context manager for using a temporary test database.
This is the recommended way to set up test databases. It properly configures the config system to use a temporary database path.
- Usage:
from mud_server.config import use_test_database
- def test_something(tmp_path):
db_path = tmp_path / “test.db” with use_test_database(db_path):
# Database operations will use db_path database.init_database()
- Parameters:
db_path (pathlib.Path | str) – Path to the test database file
- db_path