Files
xiaobaifupan/app/backend/data/providers/tushare_client.py
T

69 lines
2.1 KiB
Python

from __future__ import annotations
from dataclasses import dataclass
from threading import Lock
from typing import Any, ClassVar
from backend.bootstrap.config import display_compact_date as _display_date
from backend.data.numbers import finite_number as _number
from backend.data.providers.tushare_daily import DailyMarketMixin
from backend.data.providers.tushare_dashboard import (
DashboardMixin,
_build_ladders,
_build_limit_performance,
_build_overview,
_build_sector_rotation,
_build_sectors,
_build_yesterday_performance,
)
from backend.data.providers.tushare_dragon_tiger import DragonTigerMixin
from backend.data.providers.tushare_helpers import (
_display_time,
_prices_equal,
_realtime_market_status,
_text,
_trading_session_progress,
_value_percentile,
)
from backend.data.providers.tushare_indices import IndexMixin
from backend.data.providers.tushare_industries import (
ShenwanIndustryMixin,
_filter_members_by_listing,
_match_sector_row,
_membership_active_on,
_reconcile_membership_rows,
_sector_coverage_issue,
_sector_match_priority,
)
from backend.data.providers.tushare_sectors import SectorMixin
from backend.data.providers.tushare_stocks import StockMixin
from backend.data.providers.tushare_transport import (
TUSHARE_URL,
TushareError,
TushareTransportMixin,
)
@dataclass
class TushareClient(
DashboardMixin,
IndexMixin,
ShenwanIndustryMixin,
SectorMixin,
DragonTigerMixin,
StockMixin,
DailyMarketMixin,
TushareTransportMixin,
):
token: str
timeout: int = 30
_realtime_reference_cache: ClassVar[dict[str, dict[str, Any]]] = {}
_realtime_reference_lock: ClassVar[Lock] = Lock()
_capital_cache: ClassVar[dict[str, dict[str, Any]]] = {}
_latest_realtime_market: ClassVar[dict[str, dict[str, Any]]] = {}
_stock_activity_cache: ClassVar[dict[str, dict[str, Any]]] = {}
_stock_listing_cache: ClassVar[dict[str, Any]] = {}
_stock_listing_lock: ClassVar[Lock] = Lock()
_suspension_cache: ClassVar[dict[str, dict[str, str] | None]] = {}
_suspension_lock: ClassVar[Lock] = Lock()