53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Any, Protocol
|
|
|
|
from backend.data.contracts import DataSource, ProviderResult
|
|
|
|
|
|
class ProviderError(RuntimeError):
|
|
pass
|
|
|
|
|
|
class MarketDataProvider(Protocol):
|
|
source: DataSource
|
|
|
|
@property
|
|
def configured(self) -> bool: ...
|
|
|
|
def calendar(self, start_date: str, end_date: str) -> ProviderResult: ...
|
|
|
|
def entities(self) -> ProviderResult: ...
|
|
|
|
def daily(self, entity_type: str, identifier: str, end_date: str) -> ProviderResult: ...
|
|
|
|
def minute(self, entity_type: str, identifier: str, trade_date: str) -> ProviderResult: ...
|
|
|
|
def snapshot_inputs(
|
|
self, trade_date: str, previous_trade_date: str
|
|
) -> dict[str, ProviderResult | dict[str, Any]]: ...
|
|
|
|
def sector_members(self, representative: str, trade_date: str) -> ProviderResult: ...
|
|
|
|
def heaven_inputs(
|
|
self, representative: str, trade_date: str
|
|
) -> dict[str, ProviderResult | None]: ...
|
|
|
|
def heaven_realtime_inputs(
|
|
self, representative: str, trade_date: str, previous_trade_date: str
|
|
) -> dict[str, ProviderResult | None]: ...
|
|
|
|
def market_insight(
|
|
self,
|
|
kind: str,
|
|
trade_date: str,
|
|
previous_trade_date: str = "",
|
|
identifier: str = "",
|
|
) -> dict[str, ProviderResult | None]: ...
|
|
|
|
def realtime_snapshots(
|
|
self, identifiers: tuple[str, ...], start_time: str, end_time: str
|
|
) -> ProviderResult: ...
|
|
|
|
def screener_inputs(self, trade_dates: tuple[str, ...]) -> dict[str, ProviderResult | None]: ...
|