TradingAgents/tradingagents/dataflows/config.py

43 lines
1.2 KiB
Python

from copy import deepcopy
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 _deep_merge_dicts(base: Dict, override: Dict) -> Dict:
merged = deepcopy(base)
for key, value in override.items():
if isinstance(value, dict) and isinstance(merged.get(key), dict):
merged[key] = _deep_merge_dicts(merged[key], value)
else:
merged[key] = deepcopy(value)
return merged
def initialize_config():
"""Initialize the configuration with default values."""
global _config
if _config is None:
_config = default_config.normalize_llm_routing(default_config.DEFAULT_CONFIG)
def set_config(config: Dict):
"""Update the configuration with custom values."""
global _config
_config = default_config.normalize_llm_routing(
_deep_merge_dicts(default_config.DEFAULT_CONFIG, config)
)
def get_config() -> Dict:
"""Get the current configuration."""
if _config is None:
initialize_config()
return default_config.normalize_llm_routing(_config)
# Initialize with default config
initialize_config()