TradingAgents/tradingagents/dataflows/ecos.py

41 lines
1.2 KiB
Python

from __future__ import annotations
import requests
from .api_keys import get_api_key
from .config import get_config
from .vendor_exceptions import VendorConfigurationError, VendorTransientError
_ECOS_API_BASE = "https://ecos.bok.or.kr/api"
def get_macro_news_ecos(
curr_date: str,
look_back_days: int = 7,
limit: int = 10,
region: str | None = None,
language: str | None = None,
) -> str:
api_key = get_api_key("ECOS_API_KEY")
if not api_key:
raise VendorConfigurationError("ECOS API key is not configured.")
series = get_config().get("ecos_series", [])
if not series:
raise VendorConfigurationError("ECOS series configuration is missing.")
try:
response = requests.get(
f"{_ECOS_API_BASE}/StatisticSearch/{api_key}/json/kr/1/{limit}",
timeout=float(get_config().get("vendor_timeout", 15)),
)
response.raise_for_status()
except requests.RequestException as exc:
raise VendorTransientError(f"ECOS request failed: {exc}") from exc
return (
"ECOS macro adapter is configured but requires project-specific series codes. "
"Provide `ecos_series` in config to enable Korean macro summaries."
)