import tradingagents.default_config as default_config from typing import Dict, Optional # Use default config but allow it to be overridden _config: Optional[Dict] = None def initialize_config(): """Initialize the configuration with default values.""" global _config if _config is None: _config = default_config.get_default_config() def _merge_config(base: Dict, overrides: Dict) -> Dict: merged = dict(base) for key, value in overrides.items(): if ( key in ("data_vendors", "tool_vendors") and isinstance(value, dict) and isinstance(merged.get(key), dict) ): merged[key] = {**merged[key], **value} else: merged[key] = value return merged def set_config(config: Dict): """Update the configuration with custom values.""" global _config if _config is None: _config = default_config.get_default_config() _config = _merge_config(_config, config) def get_config() -> Dict: """Get the current configuration.""" if _config is None: initialize_config() return _config.copy() # Initialize with default config initialize_config()