mirror of
https://github.com/TauricResearch/TradingAgents.git
synced 2026-06-16 21:06:15 +03:00
- dataflows/config: deepcopy + one-level dict merge so a partial set_config doesn't clobber sibling defaults - graph: thread max_recur_limit from config to Propagator - openai_client: name the missing env var in the API-key error #788 #764 #680
62 lines
2.3 KiB
Python
62 lines
2.3 KiB
Python
"""Config isolation: get/set must not leak nested-dict references."""
|
|
|
|
import copy
|
|
import unittest
|
|
|
|
import pytest
|
|
|
|
import tradingagents.default_config as default_config
|
|
from tradingagents.dataflows.config import get_config, set_config
|
|
|
|
|
|
@pytest.mark.unit
|
|
class DataflowsConfigIsolationTests(unittest.TestCase):
|
|
def setUp(self):
|
|
set_config(copy.deepcopy(default_config.DEFAULT_CONFIG))
|
|
|
|
def test_get_config_returns_deep_copy(self):
|
|
cfg = get_config()
|
|
cfg["data_vendors"]["core_stock_apis"] = "alpha_vantage"
|
|
cfg["tool_vendors"]["get_stock_data"] = "alpha_vantage"
|
|
|
|
fresh = get_config()
|
|
self.assertEqual(fresh["data_vendors"]["core_stock_apis"], "yfinance")
|
|
self.assertNotIn("get_stock_data", fresh["tool_vendors"])
|
|
|
|
def test_set_config_does_not_alias_caller_nested_dicts(self):
|
|
custom = copy.deepcopy(default_config.DEFAULT_CONFIG)
|
|
custom["data_vendors"]["core_stock_apis"] = "alpha_vantage"
|
|
custom["tool_vendors"]["get_stock_data"] = "alpha_vantage"
|
|
|
|
set_config(custom)
|
|
|
|
custom["data_vendors"]["core_stock_apis"] = "yfinance"
|
|
custom["tool_vendors"]["get_stock_data"] = "yfinance"
|
|
|
|
fresh = get_config()
|
|
self.assertEqual(fresh["data_vendors"]["core_stock_apis"], "alpha_vantage")
|
|
self.assertEqual(fresh["tool_vendors"]["get_stock_data"], "alpha_vantage")
|
|
|
|
def test_partial_nested_update_preserves_existing_defaults(self):
|
|
set_config(
|
|
{
|
|
"data_vendors": {
|
|
"core_stock_apis": "alpha_vantage",
|
|
}
|
|
}
|
|
)
|
|
|
|
fresh = get_config()
|
|
self.assertEqual(fresh["data_vendors"]["core_stock_apis"], "alpha_vantage")
|
|
self.assertEqual(fresh["data_vendors"]["technical_indicators"], "yfinance")
|
|
self.assertEqual(fresh["data_vendors"]["fundamental_data"], "yfinance")
|
|
self.assertEqual(fresh["data_vendors"]["news_data"], "yfinance")
|
|
|
|
def test_nested_dict_updates_merge_one_level_deep(self):
|
|
set_config({"tool_vendors": {"get_stock_data": "alpha_vantage"}})
|
|
set_config({"tool_vendors": {"get_news": "alpha_vantage"}})
|
|
|
|
fresh = get_config()
|
|
self.assertEqual(fresh["tool_vendors"]["get_stock_data"], "alpha_vantage")
|
|
self.assertEqual(fresh["tool_vendors"]["get_news"], "alpha_vantage")
|