{"record":{"id":"a174a9234197ea0b","repo":"hsliuping/TradingAgents-CN","slug":"self-current-source","errorCode":null,"errorMessage":"不支持的数据源: {self.current_source}","messagePattern":"不支持的数据源: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"tradingagents/dataflows/data_source_manager.py","lineNumber":564,"sourceCode":"            logger.info(f\"✅ 数据源已切换到: {source.value}\")\n            return True\n        else:\n            logger.error(f\"❌ 数据源不可用: {source.value}\")\n            return False\n\n    def get_data_adapter(self):\n        \"\"\"获取当前数据源的适配器\"\"\"\n        if self.current_source == ChinaDataSource.MONGODB:\n            return self._get_mongodb_adapter()\n        elif self.current_source == ChinaDataSource.TUSHARE:\n            return self._get_tushare_adapter()\n        elif self.current_source == ChinaDataSource.AKSHARE:\n            return self._get_akshare_adapter()\n        elif self.current_source == ChinaDataSource.BAOSTOCK:\n            return self._get_baostock_adapter()\n        # TDX 已移除\n        else:\n            raise ValueError(f\"不支持的数据源: {self.current_source}\")\n\n    def _get_mongodb_adapter(self):\n        \"\"\"获取MongoDB适配器\"\"\"\n        try:\n            from tradingagents.dataflows.cache.mongodb_cache_adapter import get_mongodb_cache_adapter\n            return get_mongodb_cache_adapter()\n        except ImportError as e:\n            logger.error(f\"❌ MongoDB适配器导入失败: {e}\")\n            return None\n\n    def _get_tushare_adapter(self):\n        \"\"\"获取Tushare提供器（原adapter已废弃，现在直接使用provider）\"\"\"\n        try:\n            from .providers.china.tushare import get_tushare_provider\n            return get_tushare_provider()\n        except ImportError as e:\n            logger.error(f\"❌ Tushare提供器导入失败: {e}\")\n            return None","sourceCodeStart":546,"sourceCodeEnd":582,"githubUrl":"https://github.com/hsliuping/TradingAgents-CN/blob/74783e8817d6cf6de29867880631cc555153f36b/tradingagents/dataflows/data_source_manager.py#L546-L582","documentation":"Raised by DataSourceManager.get_data_adapter() when self.current_source does not match any known ChinaDataSource enum branch (MongoDB/AKShare/BAOSTOCK; TDX was removed). It is a formatted message where {self.current_source} is interpolated at raise time.","triggerScenarios":"Setting the data source to a stale value like 'tdx' or 'TDX' (removed), an arbitrary string not in ChinaDataSource, or a value loaded from persisted config written by an older version.","commonSituations":"Upgrade after TDX removal but old config/env still selects it; user typo in the datasource setting; enum member renamed between versions.","solutions":["Set the source to a supported value: mongodb, akshare, or baostock","If you depended on TDX, pin the older release or migrate to akshare/baostock","Clear persisted datasource config that still stores 'tdx'"],"exampleFix":"# before\nmanager.current_source = 'tdx'\nadapter = manager.get_data_adapter()\n# after\nfrom tradingagents.dataflows.datasource_config import ChinaDataSource\nmanager.current_source = ChinaDataSource.AKSHARE\nadapter = manager.get_data_adapter()","handlingStrategy":"validation","validationCode":"from tradingagents.dataflows.datasource_config import ChinaDataSource\nvalid = {s.value for s in ChinaDataSource}\nif manager.current_source not in valid:\n    raise ValueError(f'unsupported source; choose from {sorted(valid)}')\nadapter = manager.get_data_adapter()","typeGuard":"def is_supported_source(src) -> bool:\n    from tradingagents.dataflows.datasource_config import ChinaDataSource\n    return src in list(ChinaDataSource)","tryCatchPattern":"try:\n    adapter = manager.get_data_adapter()\nexcept ValueError as e:\n    if '不支持的数据源' in str(e):\n        manager.current_source = ChinaDataSource.AKSHARE\n        adapter = manager.get_data_adapter()\n    else:\n        raise","preventionTips":["Always assign current_source from the ChinaDataSource enum, not raw strings","Add a migration check that rejects removed values like 'tdx' at config load","Log the effective datasource at startup"],"tags":["python","datasource","enum","config"],"backgroundTag":"unsupported-enum-value","analyzedSha":"74783e8817d6cf6de29867880631cc555153f36b","analyzedAt":"2026-08-28T11:39:07.729Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}