43 lines
1.2 KiB
Python
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()
|