Files
All-in-one-Financial-Analysis/atlas-terminal/server/core/factory.py
T

32 lines
908 B
Python

"""Factory for the v2 Data Gateway stack."""
from __future__ import annotations
from functools import lru_cache
from server.core.cache import CachedGateway
from server.core.chained_gateway import ChainedGateway
from server.core.data_gateway import DataGateway
from server.core.providers import FMPProvider, KISProvider, YahooQueryProvider, YFinanceProvider
@lru_cache(maxsize=1)
def get_data_gateway() -> DataGateway:
"""Return the process-wide gateway instance.
Provider order is declarative: KIS can win for Korean tickers via
ChainedGateway._order_for, while FMP remains the default first provider for
globally listed equities when configured.
"""
return CachedGateway(
ChainedGateway(
[
FMPProvider(),
KISProvider(),
YahooQueryProvider(),
YFinanceProvider(),
]
)
)