zooui.config module¶
Configuration management for ZooUI.
- exception zooui.config.ValidationError[source]¶
Bases:
ExceptionRaised when configuration validation fails.
- class zooui.config.ConfigManager(config_file=None)[source]¶
Bases:
objectManages ZooUI configuration following the XDG Base Directory specification.
Features: - Creates default config file if missing - Validates configuration against schema - Rejects invalid values with clear errors - Supports temporary overrides via –config
Initialize ConfigManager.
- Parameters:
config_file – Optional custom config file path (for testing)
- DEFAULT_CONFIG = {'autosave': {'backup_dir': '/home/asd/.local/share/zooui/backups', 'enabled': True, 'expire_days': 7, 'interval': 300, 'max_backups': 20}, 'logging': {'colored_output': True, 'debug': False, 'log_dir': '/home/asd/.local/state/zooui/logs', 'log_to_console': True, 'log_to_file': True, 'verbose': False}, 'parallel_rendering': {'batch_size': 10, 'batch_timeout_ms': 1000, 'cache_max_age_ms': 1000, 'enable_profiling': False, 'enabled': True, 'max_batches': 10, 'max_workers': 4, 'priority_thresholds': {'high': 100.0, 'low': 2000.0, 'medium': 500.0}, 'viewport_update_threshold': 10.0}, 'render': {'order': 'smaller_on_top'}, 'tilestore': {'auto_cleanup': True, 'cleanup_on_startup': True, 'collect_cleanup_stats': True, 'max_age_days': 3}, 'zoom': {'clamp_enabled': True, 'default_zoomlevel': -4.0, 'max_zoomlevel': 10.0, 'min_zoomlevel': -12.0}}¶
- VALIDATION_SCHEMA = {('autosave', 'backup_dir'): {'message': 'backup_dir must be a string', 'type': <class 'str'>}, ('autosave', 'enabled'): {'message': 'enabled must be true or false', 'type': <class 'bool'>}, ('autosave', 'expire_days'): {'message': 'expire_days must be at least 1 day', 'min': 1, 'type': <class 'int'>}, ('autosave', 'interval'): {'message': 'Autosave interval must be at least 60 seconds (1 minute)', 'min': 60, 'type': <class 'int'>}, ('autosave', 'max_backups'): {'message': 'max_backups must be at least 1', 'min': 1, 'type': <class 'int'>}, ('logging', 'colored_output'): {'message': 'colored_output must be true or false', 'type': <class 'bool'>}, ('logging', 'debug'): {'message': 'debug must be true or false', 'type': <class 'bool'>}, ('logging', 'log_dir'): {'message': 'log_dir must be a string', 'type': <class 'str'>}, ('logging', 'log_to_console'): {'message': 'log_to_console must be true or false', 'type': <class 'bool'>}, ('logging', 'log_to_file'): {'message': 'log_to_file must be true or false', 'type': <class 'bool'>}, ('logging', 'verbose'): {'message': 'verbose must be true or false', 'type': <class 'bool'>}, ('parallel_rendering', 'batch_size'): {'message': 'batch_size must be at least 1', 'min': 1, 'type': <class 'int'>}, ('parallel_rendering', 'batch_timeout_ms'): {'message': 'batch_timeout_ms must be positive', 'min': 1, 'type': (<class 'int'>, <class 'float'>)}, ('parallel_rendering', 'cache_max_age_ms'): {'message': 'cache_max_age_ms must be positive', 'min': 1, 'type': (<class 'int'>, <class 'float'>)}, ('parallel_rendering', 'enable_profiling'): {'message': 'enable_profiling must be true or false', 'type': <class 'bool'>}, ('parallel_rendering', 'enabled'): {'message': 'enabled must be true or false', 'type': <class 'bool'>}, ('parallel_rendering', 'max_batches'): {'message': 'max_batches must be at least 1', 'min': 1, 'type': <class 'int'>}, ('parallel_rendering', 'max_workers'): {'message': 'max_workers must be at least 1', 'min': 1, 'type': <class 'int'>}, ('parallel_rendering', 'priority_thresholds'): {'message': 'priority_thresholds must contain high, medium, and low keys', 'required_keys': ['high', 'medium', 'low'], 'type': <class 'dict'>}, ('parallel_rendering', 'viewport_update_threshold'): {'message': 'viewport_update_threshold must be non-negative', 'min': 0, 'type': (<class 'int'>, <class 'float'>)}, ('render', 'order'): {'message': 'render.order must be a string', 'type': <class 'str'>}, ('tilestore', 'auto_cleanup'): {'message': 'auto_cleanup must be true or false', 'type': <class 'bool'>}, ('tilestore', 'cleanup_on_startup'): {'message': 'cleanup_on_startup must be true or false', 'type': <class 'bool'>}, ('tilestore', 'collect_cleanup_stats'): {'message': 'collect_cleanup_stats must be true or false', 'type': <class 'bool'>}, ('tilestore', 'max_age_days'): {'message': 'max_age_days must be at least 1', 'min': 1, 'type': <class 'int'>}, ('zoom', 'clamp_enabled'): {'message': 'clamp_enabled must be true or false', 'type': <class 'bool'>}, ('zoom', 'default_zoomlevel'): {'message': 'default_zoomlevel must be a number', 'type': (<class 'int'>, <class 'float'>)}, ('zoom', 'max_zoomlevel'): {'message': 'max_zoomlevel must be a number', 'type': (<class 'int'>, <class 'float'>)}, ('zoom', 'min_zoomlevel'): {'message': 'min_zoomlevel must be a number', 'type': (<class 'int'>, <class 'float'>)}}¶
- _expand_paths(config)[source]¶
Recursively expand tilde (~) in all string values.
- Parameters:
config – Configuration dictionary
- Returns:
Configuration with tilde paths expanded
- load()[source]¶
Load configuration from the XDG config dir.
- Returns:
Validated configuration dictionary
- Raises:
ValidationError – If configuration is invalid
IOError – If file cannot be read (except when creating default)
json.JSONDecodeError – If file contains invalid JSON
- save(config=None)[source]¶
Save configuration to the XDG config dir.
- Parameters:
config – Configuration to save (uses current config if None)
- Returns:
True if successful
- Raises:
ValidationError – If configuration is invalid
- merge_override(override_config)[source]¶
Merge temporary override configuration (from –config file).
- Parameters:
override_config – Configuration to merge
- Returns:
Merged configuration
- Raises:
ValidationError – If override config is invalid
- _merge_with_defaults(user_config)[source]¶
Merge user config with defaults, adding missing sections.
- _validate_config(config)[source]¶
Validate configuration against schema.
- Raises:
ValidationError – With clear error message
See Also¶
Program Configuration - User configuration guide
zooui.logger module - Logging configuration
zooui/backup/backupmanager - Autosave configuration