datahub_binary 1.4.7__cp312-cp312-win_amd64.whl → 1.4.9__cp312-cp312-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- datahub/__init__.pyi +16 -0
- datahub/ats/client_sdk.pyi +73 -0
- datahub/datacache.pyi +68 -0
- datahub/datahub.pyi +121 -0
- datahub/dbo/database.pyi +19 -0
- datahub/dbo/pg.pyi +15 -0
- datahub/dbo/redis_stream.pyi +15 -0
- datahub/dbo/sr.pyi +54 -0
- datahub/setting.pyi +46 -0
- datahub/utils/__init__.pyi +0 -0
- datahub/utils/logger.pyi +27 -0
- datahub/utils/monitor/__init__.pyi +2 -0
- datahub/utils/monitor/base.pyi +11 -0
- datahub/utils/monitor/feishu.pyi +14 -0
- datahub/utils/sftp.pyi +18 -0
- datahub.cp312-win_amd64.pyd +0 -0
- datahub.pyi +0 -1
- {datahub_binary-1.4.7.dist-info → datahub_binary-1.4.9.dist-info}/METADATA +1 -1
- datahub_binary-1.4.9.dist-info/RECORD +31 -0
- {datahub_binary-1.4.7.dist-info → datahub_binary-1.4.9.dist-info}/WHEEL +1 -1
- datahub_binary-1.4.7.dist-info/RECORD +0 -16
- {datahub_binary-1.4.7.dist-info → datahub_binary-1.4.9.dist-info}/top_level.txt +0 -0
datahub/__init__.pyi
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
from .setting import *
|
2
|
+
import datahub.protos as protos
|
3
|
+
import datahub.utils.logger as logger
|
4
|
+
import datahub.utils.sftp as sftp
|
5
|
+
from .datahub import BarDataMatrix as BarDataMatrix, CronTask as CronTask, DataHub as DataHub
|
6
|
+
from datahub.ats import client_sdk as ats_client
|
7
|
+
|
8
|
+
__all__ = ['DataHub', 'Setting', 'StarRocksSetting', 'RedisSetting', 'PostgresSetting', 'BarDataMatrix', 'protos', 'sftp', 'logger', 'SftpSetting', 'CronServerSetting', 'CronTask', 'ats_client']
|
9
|
+
|
10
|
+
# Names in __all__ with no definition:
|
11
|
+
# CronServerSetting
|
12
|
+
# PostgresSetting
|
13
|
+
# RedisSetting
|
14
|
+
# Setting
|
15
|
+
# SftpSetting
|
16
|
+
# StarRocksSetting
|
@@ -0,0 +1,73 @@
|
|
1
|
+
import datetime
|
2
|
+
from _typeshed import Incomplete
|
3
|
+
from dataclasses import dataclass
|
4
|
+
from datahub.protos import client_msg as client_msg
|
5
|
+
from enum import Enum
|
6
|
+
|
7
|
+
QuoteType: Incomplete
|
8
|
+
SubscribeType: Incomplete
|
9
|
+
|
10
|
+
class ChannelType(Enum):
|
11
|
+
Subscribe = 1
|
12
|
+
Quote = 3
|
13
|
+
Query = 4
|
14
|
+
Reply = 5
|
15
|
+
Event = 6
|
16
|
+
|
17
|
+
class StrategyError(Exception): ...
|
18
|
+
|
19
|
+
@dataclass
|
20
|
+
class Setting:
|
21
|
+
user_id: str
|
22
|
+
password: str
|
23
|
+
strategy_id: int
|
24
|
+
interval: int
|
25
|
+
quote_sub_url: str
|
26
|
+
event_sub_url: str
|
27
|
+
client_dealer_url: str
|
28
|
+
|
29
|
+
class BaseStrategy:
|
30
|
+
setting: Incomplete
|
31
|
+
def __init__(self, setting: Setting) -> None: ...
|
32
|
+
@property
|
33
|
+
def strategy_id(self): ...
|
34
|
+
@property
|
35
|
+
def subscribed_topic(self): ...
|
36
|
+
def subscribe(self, instrument_id: str, quote_type: QuoteType): ...
|
37
|
+
def unsubscribe(self, instrument_id: str, quote_type: QuoteType): ...
|
38
|
+
def on_init(self) -> None: ...
|
39
|
+
def on_start(self) -> None: ...
|
40
|
+
def on_stop(self) -> None: ...
|
41
|
+
def on_order(self, event: client_msg.OrderEvent): ...
|
42
|
+
def qry_instrument_req(self, instrument_id: str = None, basket_instrument_id: str = None, market_list: list[str] = ()) -> str: ...
|
43
|
+
def on_qry_instrument_rsp(self, rsp: client_msg.QryInstrumentRsp): ...
|
44
|
+
def qry_strategy_info_req(self, strategy_id: int) -> str: ...
|
45
|
+
def on_qry_strategy_info_rsp(self, rsp: client_msg.QryStrategyInfoRsp): ...
|
46
|
+
def qry_trade_req(self) -> str: ...
|
47
|
+
def on_qry_trade_rsp(self, rsp: client_msg.QryTradesRsp): ...
|
48
|
+
def qry_order_req(self, cl_order_id: str = None, order_id: str = None, is_active: int = 0) -> str: ...
|
49
|
+
def on_qry_order_rsp(self, rsp: client_msg.QryOrdersRsp): ...
|
50
|
+
def qry_strategy_posi_req(self) -> str: ...
|
51
|
+
def on_qry_strategy_posi_rsp(self, rsp: client_msg.QryStrategyPositionRsp): ...
|
52
|
+
def qry_book_stat_req(self, book_id: str = None) -> str: ...
|
53
|
+
def on_qry_book_stat_rsp(self, rsp: client_msg.QryBookStatRsp): ...
|
54
|
+
def qry_signal_kline_req(self, signal_id: int, start_date: datetime.date = None) -> str: ...
|
55
|
+
def on_qry_signal_kline_rsp(self, rsp: client_msg.QrySignalKlineRsp): ...
|
56
|
+
def qry_quote_req(self, instrument_id: str | None = None) -> str: ...
|
57
|
+
def on_qry_quote_rsp(self, qry_quote_rsp: client_msg.QryQuoteRsp): ...
|
58
|
+
def on_snapshot(self, snapshot: client_msg.MDSnapshot): ...
|
59
|
+
def place_order(self, order: client_msg.PlaceOrder): ...
|
60
|
+
def book_trade_req(self, trade: client_msg.BookTradeReq): ...
|
61
|
+
def on_book_trade_rsp(self, rsp: client_msg.BookTradeRsp): ...
|
62
|
+
def on_trade_confirm(self, trade: client_msg.TradeConfirm): ...
|
63
|
+
def on_order_reject(self, order: client_msg.OrderReject): ...
|
64
|
+
def cancel_order(self, order: client_msg.CancelOrder): ...
|
65
|
+
def cancel_all_order(self) -> None: ...
|
66
|
+
def on_cancel_confirm(self, order: client_msg.CancelConfirm): ...
|
67
|
+
def on_cancel_pending_confirm(self, order: client_msg.CancelPendingConfirm): ...
|
68
|
+
def on_cancel_reject(self, order: client_msg.CancelReject): ...
|
69
|
+
def on_qry_lock_record_rsp(self, rsp: client_msg.QryLockRecordRsp): ...
|
70
|
+
def calc(self) -> None: ...
|
71
|
+
def qry_lock_record_req(self) -> None: ...
|
72
|
+
def proxy(self) -> None: ...
|
73
|
+
def run(self) -> None: ...
|
datahub/datacache.pyi
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
import polars as pl
|
2
|
+
from _typeshed import Incomplete
|
3
|
+
from datahub import PostgresSetting as PostgresSetting, Setting as Setting, StarRocksSetting as StarRocksSetting
|
4
|
+
from datahub.datahub import DataHub as DataHub
|
5
|
+
from datahub.utils.logger import logger as logger
|
6
|
+
from datetime import datetime, time
|
7
|
+
from enum import Enum
|
8
|
+
from typing import Any, Literal, Sequence
|
9
|
+
|
10
|
+
class UpdateLevel(Enum):
|
11
|
+
META = 'meta'
|
12
|
+
DF = 'df'
|
13
|
+
|
14
|
+
class KVJsonDB:
|
15
|
+
db_path: Incomplete
|
16
|
+
def __init__(self, db_path: str) -> None: ...
|
17
|
+
def set(self, key: str, value: Any): ...
|
18
|
+
def get(self, key: str, default: Any | None = None) -> Any | None: ...
|
19
|
+
def delete(self, key: str) -> bool: ...
|
20
|
+
def all(self) -> dict[str, Any]: ...
|
21
|
+
def all_keys(self) -> list[str]: ...
|
22
|
+
def clear(self) -> None: ...
|
23
|
+
def close(self) -> None: ...
|
24
|
+
|
25
|
+
class DataCache:
|
26
|
+
prefix: Incomplete
|
27
|
+
data_path: Incomplete
|
28
|
+
update_cache: Incomplete
|
29
|
+
cache_only: Incomplete
|
30
|
+
datahub: Incomplete
|
31
|
+
meta_db: Incomplete
|
32
|
+
data_files: Incomplete
|
33
|
+
def __init__(self, datahub: DataHub, data_path: str, prefix: str, update_cache: bool = False, cache_only: bool = False) -> None: ...
|
34
|
+
def get_data_matrix(self, trade_time: datetime, factors: list[str], instrument_ids: list[str], **kwargs) -> pl.DataFrame: ...
|
35
|
+
def get_cache_filepath(self, trade_time: datetime) -> str: ...
|
36
|
+
def update_datacache(self, filepath: str, df: pl.DataFrame, update_level: Sequence[UpdateLevel] = ()): ...
|
37
|
+
def read_from_cache(self, trade_time: datetime, factors: list[str], instrument_ids: list[str], **kwargs) -> pl.DataFrame: ...
|
38
|
+
def sync_all_meta_info(self) -> None: ...
|
39
|
+
@staticmethod
|
40
|
+
def f64_to_f32(df: pl.DataFrame) -> pl.DataFrame: ...
|
41
|
+
@staticmethod
|
42
|
+
def get_missing_times(df: pl.DataFrame, intra_time_list: list[time]) -> list[time]: ...
|
43
|
+
@staticmethod
|
44
|
+
def get_missing_instruments(df: pl.DataFrame, instruments: list[str]) -> list[str]: ...
|
45
|
+
@staticmethod
|
46
|
+
def get_missing_factors(df: pl.DataFrame, factors: list[str]) -> list[str]: ...
|
47
|
+
|
48
|
+
class FactorDataCache(DataCache):
|
49
|
+
def get_data_matrix(self, trade_time: datetime, factors: list[str], instrument_ids: list[str], **kwargs) -> pl.DataFrame: ...
|
50
|
+
def read_factor_from_cache(self, trade_time: datetime, factors: list[str], instrument_ids: list[str]) -> pl.DataFrame: ...
|
51
|
+
|
52
|
+
class RiskFactorDataCache(DataCache):
|
53
|
+
version: Incomplete
|
54
|
+
def __init__(self, datahub: DataHub, version: str, data_path: str, prefix: str, update_cache: bool = False) -> None: ...
|
55
|
+
def get_data_matrix(self, trade_time: datetime, factors: list[str], instrument_ids: list[str], **kwargs) -> pl.DataFrame: ...
|
56
|
+
def read_risk_factors_from_cache(self, trade_time: datetime, factors: list[str], instrument_ids: list[str]) -> pl.DataFrame: ...
|
57
|
+
|
58
|
+
class ReturnDataCache(DataCache):
|
59
|
+
def get_data_matrix(self, trade_time: datetime, factors: list[str], instrument_ids: list[str], **kwargs) -> pl.DataFrame: ...
|
60
|
+
def read_return_from_cache(self, trade_time: datetime, factors: list[str], instrument_ids: list[str], adj_method: Literal['forward'] = 'forward') -> pl.DataFrame: ...
|
61
|
+
|
62
|
+
class HFTFactorDataCache(DataCache):
|
63
|
+
def read_factor_from_cache(self, trade_time: datetime, factors: list[str], instrument_ids: list[str]) -> pl.DataFrame: ...
|
64
|
+
|
65
|
+
class HFTReturnDataCache(DataCache):
|
66
|
+
def read_return_from_cache(self, trade_time: datetime, factors: list[str], instrument_ids: list[str], adj_method: Literal['forward'] = 'forward') -> pl.DataFrame: ...
|
67
|
+
|
68
|
+
def main() -> None: ...
|
datahub/datahub.pyi
ADDED
@@ -0,0 +1,121 @@
|
|
1
|
+
import numpy.typing as npt
|
2
|
+
import polars as pl
|
3
|
+
from .dbo.pg import Postgres as Postgres
|
4
|
+
from .dbo.redis_stream import RedisStream as RedisStream
|
5
|
+
from .dbo.sr import StarRocks as StarRocks
|
6
|
+
from .protos.client_msg import BarMatrix as BarMatrix, MsgType as MsgType
|
7
|
+
from .setting import Setting as Setting
|
8
|
+
from .utils.logger import logger as logger
|
9
|
+
from _typeshed import Incomplete
|
10
|
+
from dataclasses import dataclass
|
11
|
+
from datetime import date, datetime, time
|
12
|
+
from pydantic import BaseModel
|
13
|
+
from typing import Any, Iterator, Literal, Sequence
|
14
|
+
|
15
|
+
class DataHubError(Exception): ...
|
16
|
+
|
17
|
+
class CronTask(BaseModel):
|
18
|
+
task_id: str
|
19
|
+
task_type: str
|
20
|
+
task_name: str
|
21
|
+
task_status: str
|
22
|
+
task_params: dict[str, Any]
|
23
|
+
result: str | None
|
24
|
+
create_time: str | None
|
25
|
+
end_time: str | None
|
26
|
+
|
27
|
+
@dataclass
|
28
|
+
class BarDataMatrix:
|
29
|
+
msg_sequence: int
|
30
|
+
trade_time: datetime
|
31
|
+
last_timestamp: datetime
|
32
|
+
instrument_ids: Sequence[str]
|
33
|
+
cols: Sequence[str]
|
34
|
+
data_matrix: npt.NDArray[Any]
|
35
|
+
def to_df(self) -> pl.DataFrame: ...
|
36
|
+
@staticmethod
|
37
|
+
def get_empty_matrix(instrument_ids: Sequence[str], cols: Sequence[str], trade_time: datetime) -> BarDataMatrix: ...
|
38
|
+
@staticmethod
|
39
|
+
def from_df(instrument_ids: Sequence[str], cols: Sequence[str], trade_time: datetime, df: pl.DataFrame) -> BarDataMatrix: ...
|
40
|
+
@staticmethod
|
41
|
+
def from_proto(proto_msg: BarMatrix) -> BarDataMatrix: ...
|
42
|
+
def to_proto(self) -> BarMatrix: ...
|
43
|
+
|
44
|
+
class RsTopic:
|
45
|
+
indicator_5min: str
|
46
|
+
factor_5min: str
|
47
|
+
predictor: str
|
48
|
+
|
49
|
+
class DataHub:
|
50
|
+
setting: Incomplete
|
51
|
+
def __init__(self, setting: Setting) -> None: ...
|
52
|
+
@property
|
53
|
+
def calendar(self): ...
|
54
|
+
@property
|
55
|
+
def starrocks(self): ...
|
56
|
+
@property
|
57
|
+
def postgres(self): ...
|
58
|
+
@property
|
59
|
+
def redis(self): ...
|
60
|
+
def post_task(self, task: CronTask) -> dict[str, Any]: ...
|
61
|
+
def get_kline(self, freq: str, instruments: Sequence[str] = (), start_time: datetime | None = None, end_time: datetime | None = None, adj_method: str | None = None) -> pl.DataFrame: ...
|
62
|
+
def get_indicator_type(self): ...
|
63
|
+
def get_factor_type(self) -> pl.DataFrame: ...
|
64
|
+
def get_indicator_info(self, indicators: Sequence[str] = (), types: Sequence[str] = ()) -> pl.DataFrame: ...
|
65
|
+
def get_factor_info(self, factors: Sequence[str] = (), types: Sequence[str] = ()) -> pl.DataFrame: ...
|
66
|
+
def get_seq_factor_info(self, resample_type: str, factors: Sequence[str] = ()) -> pl.DataFrame: ...
|
67
|
+
def get_seq_y_info(self, resample_type: str, factors: Sequence[str] = ()) -> pl.DataFrame: ...
|
68
|
+
def get_seq_factor_stat(self, start_time: datetime, end_time: datetime, stat_type: str, factors: Sequence[str] = (), instruments: Sequence[str] = ()) -> pl.DataFrame: ...
|
69
|
+
def get_seq_y_stat(self, start_time: datetime, end_time: datetime, stat_type: str, factors: Sequence[str] = (), instruments: Sequence[str] = ()) -> pl.DataFrame: ...
|
70
|
+
def get_indicator_data(self, start_time: datetime, end_time: datetime | None = None, indicators: Sequence[str] = (), instruments: Sequence[str] = (), types: Sequence[str] = ()) -> pl.DataFrame: ...
|
71
|
+
def get_instrument_list(self, trade_date: date, indicators: Sequence[str] = ()) -> Sequence[str]: ...
|
72
|
+
def get_instrument_info(self, trade_date: date, fields: Sequence[str] | None = None, market: str | None = None, instrument_type: Literal['option', 'spot', 'future', 'etf'] | None = None) -> pl.DataFrame: ...
|
73
|
+
def get_future_domain_info(self, instrument_sub_type: str | None = None, start_date: date | None = None, end_date: date | None = None, market: str = 'CCFX', rank_id: int = 1, domain_factor: str = 'volume') -> pl.DataFrame: ...
|
74
|
+
def get_future_snapshot(self, instrument_sub_type: str, start_date: date, end_date: date, market: str = 'CCFX', rank_id: int = 1, domain_factor: str = 'volume') -> pl.DataFrame: ...
|
75
|
+
def get_universe(self, trade_date: date, universe: str | None = None) -> pl.DataFrame: ...
|
76
|
+
def get_indicator_matrix(self, trade_time: datetime, indicators: Sequence[str], instrument_ids: Sequence[str], expire_days: int = 1) -> BarDataMatrix: ...
|
77
|
+
def get_seq_factor_data(self, start_time: datetime, end_time: datetime, factors: Sequence[str] = (), instruments: Sequence[str] = ()) -> pl.DataFrame: ...
|
78
|
+
def get_indicator_matrix_list(self, start_date: date, end_date: date, indicators: Sequence[str], instrument_ids: Sequence[str], expire_days: int = 1) -> list[BarDataMatrix]: ...
|
79
|
+
def get_risk_factor_matrix(self, version: str, trade_time: datetime, factors: Sequence[str], instrument_ids: Sequence[str]) -> BarDataMatrix: ...
|
80
|
+
def read_indicator_matrix(self, start_time: datetime | None = None, topic: str = ..., block: int = 0) -> Iterator[BarDataMatrix]: ...
|
81
|
+
def write_indicator_matrix(self, matrix: BarDataMatrix, topic: str = ...): ...
|
82
|
+
def delete_indicator_matrix(self, topic: str = ...): ...
|
83
|
+
def read_factor_matrix(self, start_time: datetime | None = None, topic: str = ..., block: int = 0) -> Iterator[BarDataMatrix]: ...
|
84
|
+
def write_factor_matrix(self, matrix: BarDataMatrix, topic: str = ...): ...
|
85
|
+
def delete_factor_matrix(self, topic: str = ...): ...
|
86
|
+
def read_predictor_matrix(self, start_time: datetime | None = None, topic: str = ..., block: int = 0) -> Iterator[BarDataMatrix]: ...
|
87
|
+
def write_predictor_matrix(self, matrix: BarDataMatrix, topic: str = ...): ...
|
88
|
+
def delete_predictor_matrix(self, topic: str = ...): ...
|
89
|
+
def get_factor_data(self, start_time: datetime, end_time: datetime | None = None, factors: Sequence[str] = (), instruments: Sequence[str] = (), types: Sequence[str] = ()) -> pl.DataFrame: ...
|
90
|
+
def get_factor_matrix(self, trade_time: datetime, factors: Sequence[str], instrument_ids: Sequence[str]) -> BarDataMatrix: ...
|
91
|
+
def get_return_data(self, start_time: datetime, end_time: datetime | None = None, factors: Sequence[str] = (), instruments: Sequence[str] = (), adj_method: Literal['forward'] = 'forward') -> pl.DataFrame: ...
|
92
|
+
def get_seq_y_data(self, start_time: datetime, end_time: datetime | None = None, factors: Sequence[str] = (), instruments: Sequence[str] = ()) -> pl.DataFrame: ...
|
93
|
+
def get_return_matrix(self, trade_time: datetime, factors: Sequence[str], instrument_ids: Sequence[str], adj_method: Literal['forward'] = 'forward') -> BarDataMatrix: ...
|
94
|
+
def get_ex_factor_info(self, instruments: Sequence[str] = (), trade_date: date | None = None) -> pl.DataFrame: ...
|
95
|
+
def get_instrument_industry(self, trade_date: date, industry_source: str = 'sws', industry_level: Literal[1, 2, 3] = 1, use_last: bool = False) -> pl.DataFrame: ...
|
96
|
+
def get_md_transaction(self, start_date: date, end_date: date | None = None, instruments: Sequence[str] = (), markets: Sequence[str] = ()) -> pl.DataFrame: ...
|
97
|
+
def get_md_snapshot(self, start_date: date, end_date: date | None = None, instruments: Sequence[str] = (), markets: Sequence[str] = ()) -> pl.DataFrame: ...
|
98
|
+
def get_seq_snapshot(self, start_date: date, end_date: date | None = None, instruments: Sequence[str] = ()) -> pl.DataFrame: ...
|
99
|
+
def get_resample_lob(self, resample_type: str, start_date: date, end_date: date | None = None, instruments: Sequence[str] = ()) -> pl.DataFrame: ...
|
100
|
+
def get_last_seq_snapshot(self, end_time: datetime, instruments: Sequence[str] = (), is_filter_limit: bool = False) -> pl.DataFrame: ...
|
101
|
+
def get_trading_days(self, start_date: date, end_date: date, market: str = 'XSHG') -> list[date]: ...
|
102
|
+
def upsert_from_file(self, database: str, table: str, file_path: str): ...
|
103
|
+
def get_blacklist(self, blacklist_ids: Sequence[str], end_date: date = None) -> pl.DataFrame: ...
|
104
|
+
def get_sbl_list(self, brokers: Sequence[str] = (), sbl_ids: Sequence[str] = (), start_date: date | None = None, end_date: date | None = None) -> pl.DataFrame: ...
|
105
|
+
|
106
|
+
class Calendar:
|
107
|
+
def __init__(self, datahub: DataHub) -> None: ...
|
108
|
+
def after(self, trade_date: date, n: int): ...
|
109
|
+
def before(self, trade_date: date, n: int): ...
|
110
|
+
def between(self, start_date: date, end_date: date): ...
|
111
|
+
@staticmethod
|
112
|
+
def str2date(dt: str, fmt: str = '%Y-%m-%d') -> date: ...
|
113
|
+
@staticmethod
|
114
|
+
def str2datetime(dt: str, fmt: str = '%Y-%m-%d') -> datetime: ...
|
115
|
+
@staticmethod
|
116
|
+
def date2datetime(dt: date, hour: int = 0, minute: int = 0, second: int = 0) -> datetime: ...
|
117
|
+
@staticmethod
|
118
|
+
def datetime2date(dt: datetime) -> date: ...
|
119
|
+
def get_latest_trade_date(self, dt: date | None = None) -> date: ...
|
120
|
+
@staticmethod
|
121
|
+
def get_trading_hours(trade_date: date, freq: str, morning_time_range: tuple[time, time] = ..., afternoon_time_range: tuple[time, time] = ...) -> list[datetime]: ...
|
datahub/dbo/database.pyi
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
import polars as pl
|
2
|
+
from _typeshed import Incomplete
|
3
|
+
from contextlib import contextmanager
|
4
|
+
from datahub.utils.logger import logger as logger
|
5
|
+
from sqlalchemy.engine import Connection as Connection, Engine as Engine
|
6
|
+
from sqlalchemy.orm import Session as Session
|
7
|
+
from typing import Any, Generator, Literal
|
8
|
+
|
9
|
+
class Database:
|
10
|
+
engine: Incomplete
|
11
|
+
metadata: Incomplete
|
12
|
+
schema: Incomplete
|
13
|
+
session_factory: Incomplete
|
14
|
+
def __init__(self, connection_string: str, pool_size: int = 3, max_overflow: int = 10, pool_timeout: int = 30, pool_recycle: int = 3600) -> None: ...
|
15
|
+
def insert_many(self, table_name: str, data: list[dict[str, Any]]) -> int: ...
|
16
|
+
def query(self, sql: str, return_format: Literal['dataframe', 'records'] = 'dataframe') -> pl.DataFrame | list[dict] | None: ...
|
17
|
+
@contextmanager
|
18
|
+
def get_session(self) -> Generator[Session, Any, None]: ...
|
19
|
+
def query_with_session(self, sql: str, session: Session, return_format: Literal['dataframe', 'records'] = 'dataframe'): ...
|
datahub/dbo/pg.pyi
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
import polars as pl
|
2
|
+
from .database import Database as Database
|
3
|
+
from _typeshed import Incomplete
|
4
|
+
from datahub.setting import PostgresSetting as PostgresSetting
|
5
|
+
from datahub.utils.logger import logger as logger
|
6
|
+
from datetime import date
|
7
|
+
from typing import Any, Sequence
|
8
|
+
|
9
|
+
class Postgres(Database):
|
10
|
+
db_url: Incomplete
|
11
|
+
def __init__(self, setting: PostgresSetting) -> None: ...
|
12
|
+
def upsert_many(self, table_name: str, data: list[dict[str, Any]], keys: list[str]) -> int: ...
|
13
|
+
def get_trading_days(self, start_date: date, end_date: date, market: str = 'XSHG') -> list[date]: ...
|
14
|
+
def get_blacklist(self, blacklist_ids: Sequence[str], end_date: date = None) -> pl.DataFrame: ...
|
15
|
+
def get_sbl_list(self, brokers: Sequence[str] = (), sbl_ids: Sequence[str] = (), start_date: date | None = None, end_date: date | None = None) -> pl.DataFrame: ...
|
@@ -0,0 +1,15 @@
|
|
1
|
+
from ..protos.client_msg import deserialize as deserialize, serialize as serialize
|
2
|
+
from _typeshed import Incomplete
|
3
|
+
from datahub.setting import RedisSetting as RedisSetting
|
4
|
+
from typing import Any, Iterator, Sequence
|
5
|
+
|
6
|
+
class RedisStream:
|
7
|
+
client: Incomplete
|
8
|
+
ident: Incomplete
|
9
|
+
def __init__(self, setting: RedisSetting) -> None: ...
|
10
|
+
def ensure_group(self, topics: Sequence[str]): ...
|
11
|
+
def set_position(self, topic: str, posi: str): ...
|
12
|
+
def read(self, topics: Sequence[str], count: int = 1, ignore_pending: bool = False, block: int = 0) -> Iterator[Any]: ...
|
13
|
+
def write(self, topic: str, proto_msg: Any): ...
|
14
|
+
def delete(self, topic: str): ...
|
15
|
+
def ack(self, topic: str, message_id: str): ...
|
datahub/dbo/sr.pyi
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
import polars as pl
|
2
|
+
from .database import Database as Database
|
3
|
+
from _typeshed import Incomplete
|
4
|
+
from datahub.setting import StarRocksSetting as StarRocksSetting
|
5
|
+
from datahub.utils.logger import logger as logger
|
6
|
+
from datahub.utils.sftp import SFTPClient as SFTPClient
|
7
|
+
from datetime import date, datetime
|
8
|
+
from typing import Literal, Sequence
|
9
|
+
|
10
|
+
class StarRocks(Database):
|
11
|
+
db_url: Incomplete
|
12
|
+
http_url: Incomplete
|
13
|
+
username: Incomplete
|
14
|
+
password: Incomplete
|
15
|
+
setting: Incomplete
|
16
|
+
home_path: str
|
17
|
+
sftp_setting: Incomplete
|
18
|
+
force_query: Incomplete
|
19
|
+
def __init__(self, setting: StarRocksSetting) -> None: ...
|
20
|
+
def query_with_cache(self, sql: str, return_format: Literal['dataframe', 'records'] = 'dataframe') -> pl.DataFrame | list[dict] | None: ...
|
21
|
+
def query_large_data(self, sql: str) -> pl.DataFrame: ...
|
22
|
+
def get_indicator_type(self) -> pl.DataFrame: ...
|
23
|
+
@property
|
24
|
+
def factor_info(self) -> pl.DataFrame: ...
|
25
|
+
def get_factor_info(self, factors: Sequence[str] = (), types: Sequence[str] = ()) -> pl.DataFrame: ...
|
26
|
+
def get_seq_factor_info(self, resample_type: str, factors: Sequence[str] = ()) -> pl.DataFrame: ...
|
27
|
+
def get_seq_y_info(self, resample_type: str, factors: Sequence[str] = ()) -> pl.DataFrame: ...
|
28
|
+
def get_factor_type(self) -> pl.DataFrame: ...
|
29
|
+
def get_indicator_info(self, indicators: Sequence[str] = (), types: Sequence[str] = ()) -> pl.DataFrame: ...
|
30
|
+
def get_future_domain_info(self, instrument_sub_type: str | None = None, start_date: date | None = None, end_date: date | None = None, market: str = 'CCFX', rank_id: int = 1, domain_factor: str = 'volume') -> pl.DataFrame: ...
|
31
|
+
def get_future_snapshot(self, instrument_sub_type: str, start_date: date, end_date: date, market: str = 'CCFX', rank_id: int = 1, domain_factor: str = 'volume') -> pl.DataFrame: ...
|
32
|
+
def get_indicator_data(self, start_time: datetime, end_time: datetime, indicators: Sequence[str] = (), instruments: Sequence[str] = (), types: Sequence[str] = (), use_last: bool = False) -> pl.DataFrame: ...
|
33
|
+
def get_seq_factor_data(self, start_time: datetime, end_time: datetime, factors: Sequence[str] = (), instruments: Sequence[str] = ()) -> pl.DataFrame: ...
|
34
|
+
def get_seq_factor_stat(self, start_time: datetime, end_time: datetime, stat_type: str, factors: Sequence[str] = (), instruments: Sequence[str] = ()) -> pl.DataFrame: ...
|
35
|
+
def get_factor_data(self, start_time: datetime, end_time: datetime, factors: Sequence[str] = (), instruments: Sequence[str] = (), types: Sequence[str] = ()) -> pl.DataFrame: ...
|
36
|
+
def get_risk_factor_data(self, version: str, start_time: datetime, end_time: datetime, factors: Sequence[str] = (), instruments: Sequence[str] = ()) -> pl.DataFrame: ...
|
37
|
+
def get_return_data(self, start_time: datetime, end_time: datetime, factors: Sequence[str] = (), instruments: Sequence[str] = (), adj_method: Literal['forward'] = 'forward') -> pl.DataFrame: ...
|
38
|
+
def get_seq_y_data(self, start_time: datetime, end_time: datetime, factors: Sequence[str] = (), instruments: Sequence[str] = ()) -> pl.DataFrame: ...
|
39
|
+
def get_seq_y_stat(self, start_time: datetime, end_time: datetime, stat_type: str, factors: Sequence[str] = (), instruments: Sequence[str] = ()) -> pl.DataFrame: ...
|
40
|
+
def get_ex_factor_info(self, instruments: Sequence[str] = (), trade_date: date | None = None) -> pl.DataFrame: ...
|
41
|
+
def get_kline(self, freq: str, instruments: Sequence[str] = (), start_time: datetime | None = None, end_time: datetime | None = None, adj_method: str | None = None) -> pl.DataFrame: ...
|
42
|
+
def get_md_transaction(self, start_date: date, end_date: date, instruments: Sequence[str] = (), markets: Sequence[str] = ()) -> pl.DataFrame: ...
|
43
|
+
def get_instrument_industry(self, trade_date: date, industry_source: str = 'sws', industry_level: Literal[1, 2, 3] = 1, use_last: bool = False) -> pl.DataFrame: ...
|
44
|
+
def get_instrument_list(self, trade_date: date, indicators: Sequence[str] = ()) -> Sequence[str]: ...
|
45
|
+
def get_universe(self, trade_date: date, universe: str | None = None) -> pl.DataFrame: ...
|
46
|
+
def get_instrument_info(self, trade_date: date, fields: Sequence[str] | None = None, market: str | None = None, instrument_type: Literal['option', 'spot', 'future', 'etf'] | None = None) -> pl.DataFrame: ...
|
47
|
+
def get_md_snapshot(self, start_date: date, end_date: date, instruments: Sequence[str] = (), markets: Sequence[str] = ()) -> pl.DataFrame: ...
|
48
|
+
def get_seq_snapshot(self, start_date: date, end_date: date, instruments: Sequence[str] = ()) -> pl.DataFrame: ...
|
49
|
+
def get_resample_lob(self, resample_type: str, start_date: date, end_date: date, instruments: Sequence[str] = ()) -> pl.DataFrame: ...
|
50
|
+
def get_last_seq_snapshot(self, end_time: datetime, instruments: Sequence[str] = (), is_filter_limit: bool = False) -> pl.DataFrame: ...
|
51
|
+
def get_loads(self, label: str) -> pl.DataFrame: ...
|
52
|
+
def stream_load(self, database: str, table: str, file_path: str): ...
|
53
|
+
def broker_load_parquet(self, database: str, table: str, fields: Sequence[str], file_path: str, timeout: int = 3600, label: str | None = None, is_sync: bool = False) -> str: ...
|
54
|
+
def get_profile(self, sql: str) -> str: ...
|
datahub/setting.pyi
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
from dataclasses import dataclass
|
2
|
+
|
3
|
+
@dataclass
|
4
|
+
class RedisSetting:
|
5
|
+
url: str
|
6
|
+
ident: str
|
7
|
+
|
8
|
+
@dataclass
|
9
|
+
class SftpSetting:
|
10
|
+
host: str
|
11
|
+
port: int
|
12
|
+
username: str
|
13
|
+
password: str
|
14
|
+
home_path: str
|
15
|
+
|
16
|
+
@dataclass
|
17
|
+
class StarRocksSetting:
|
18
|
+
host: str
|
19
|
+
db_port: int
|
20
|
+
http_port: int
|
21
|
+
username: str
|
22
|
+
password: str
|
23
|
+
timezone: str = ...
|
24
|
+
force_query: bool = ...
|
25
|
+
sftp: SftpSetting | None = ...
|
26
|
+
|
27
|
+
@dataclass
|
28
|
+
class PostgresSetting:
|
29
|
+
host: str
|
30
|
+
db_port: int
|
31
|
+
username: str
|
32
|
+
password: str
|
33
|
+
|
34
|
+
@dataclass
|
35
|
+
class CronServerSetting:
|
36
|
+
host: str
|
37
|
+
port: int
|
38
|
+
|
39
|
+
@dataclass
|
40
|
+
class Setting:
|
41
|
+
redis: RedisSetting | None = ...
|
42
|
+
starrocks: StarRocksSetting | None = ...
|
43
|
+
postgres: PostgresSetting | None = ...
|
44
|
+
sftp: SftpSetting | None = ...
|
45
|
+
cron_server: CronServerSetting | None = ...
|
46
|
+
timezone: str = ...
|
File without changes
|
datahub/utils/logger.pyi
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
from .monitor import Feishu as Feishu
|
2
|
+
from _typeshed import Incomplete
|
3
|
+
from typing import Callable, Literal
|
4
|
+
|
5
|
+
LOGURU_LEVEL: Incomplete
|
6
|
+
|
7
|
+
def timer_decorator(func: Callable) -> Callable: ...
|
8
|
+
def filter_log_level(record, level): ...
|
9
|
+
|
10
|
+
class Logger:
|
11
|
+
log_dir: Incomplete
|
12
|
+
retention: Incomplete
|
13
|
+
name: Incomplete
|
14
|
+
log_format: Incomplete
|
15
|
+
trace: Incomplete
|
16
|
+
debug: Incomplete
|
17
|
+
info: Incomplete
|
18
|
+
warning: Incomplete
|
19
|
+
error: Incomplete
|
20
|
+
exception: Incomplete
|
21
|
+
min_level: Incomplete
|
22
|
+
min_level_no: Incomplete
|
23
|
+
monitor_type: Incomplete
|
24
|
+
monitor: Incomplete
|
25
|
+
def __init__(self, name: str, log_dir: str | None = None, retention: int = 5, monitor_type: Literal['Feishu'] = 'Feishu') -> None: ...
|
26
|
+
|
27
|
+
def main() -> None: ...
|
@@ -0,0 +1,11 @@
|
|
1
|
+
from dataclasses import dataclass
|
2
|
+
|
3
|
+
@dataclass
|
4
|
+
class Monitor:
|
5
|
+
def to(self, who: str): ...
|
6
|
+
def at(self, who: str): ...
|
7
|
+
def clear(self) -> None: ...
|
8
|
+
def info(self, msg: str): ...
|
9
|
+
def error(self, msg: str): ...
|
10
|
+
def warning(self, msg: str): ...
|
11
|
+
def debug(self, msg: str): ...
|
@@ -0,0 +1,14 @@
|
|
1
|
+
from .base import Monitor as Monitor
|
2
|
+
from _typeshed import Incomplete
|
3
|
+
from dataclasses import dataclass, field
|
4
|
+
|
5
|
+
TARGET: Incomplete
|
6
|
+
|
7
|
+
@dataclass
|
8
|
+
class Feishu(Monitor):
|
9
|
+
app_id: str = ...
|
10
|
+
app_secret: str = ...
|
11
|
+
users: dict = field(default_factory=Incomplete)
|
12
|
+
chats: dict = field(default_factory=Incomplete)
|
13
|
+
def to(self, who: TARGET): ...
|
14
|
+
def at(self, who: TARGET): ...
|
datahub/utils/sftp.pyi
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
from _typeshed import Incomplete
|
2
|
+
from datahub.setting import SftpSetting
|
3
|
+
from paramiko import SFTPClient as _SFTPClient
|
4
|
+
|
5
|
+
__all__ = ['SFTPClient']
|
6
|
+
|
7
|
+
class SFTPClient:
|
8
|
+
setting: Incomplete
|
9
|
+
chmod: Incomplete
|
10
|
+
ssh: Incomplete
|
11
|
+
sftp: _SFTPClient
|
12
|
+
def __init__(self, setting: SftpSetting, chmod: int = 509) -> None: ...
|
13
|
+
def ensure_dir(self, dir_path: str, chmod: int = 509) -> bool: ...
|
14
|
+
def rmdir_recursive(self, path: str): ...
|
15
|
+
def connect(self): ...
|
16
|
+
def close(self) -> None: ...
|
17
|
+
def __enter__(self): ...
|
18
|
+
def __exit__(self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: types.TracebackType | None) -> None: ...
|
datahub.cp312-win_amd64.pyd
CHANGED
Binary file
|
datahub.pyi
CHANGED
@@ -0,0 +1,31 @@
|
|
1
|
+
datahub.cp312-win_amd64.pyd,sha256=MNGR3nCvHeUobM6aH0_-EOQmARCkLhhpAJ5zhbAsu4M,1782272
|
2
|
+
datahub.pyi,sha256=IXQ1dWxIq3itkkoYNJiPuRMWksWE1_4XVpjRYjy9tnQ,1449
|
3
|
+
datahub/__init__.pyi,sha256=hX8D9Qd6uPjZiUBd6rIq7Llkt_H4l_RvRXsws3sdYbI,630
|
4
|
+
datahub/datacache.pyi,sha256=rVDkzr0nLn54RT6EkYMDBh41t788XfVFyL4XKTJ2eSM,3587
|
5
|
+
datahub/datahub.pyi,sha256=yGFRSDc0lBTZROyVGxzmuLqvfVqzgL657J6EGgjufyM,8751
|
6
|
+
datahub/setting.pyi,sha256=u6gYjjF6r1thSpp2XNMvg_1JUcqB64dRTkNoHlOoKUQ,889
|
7
|
+
datahub/ats/client_sdk.pyi,sha256=wwYRrVlM_qnpGhUifS-xgBAwoUDgQgFAC6TkTq8CLX8,3263
|
8
|
+
datahub/dbo/database.pyi,sha256=O8Gp0Os3tzznLa6hdmCaXnq7Iw4xAAkW4YcjK0jUSUY,1024
|
9
|
+
datahub/dbo/pg.pyi,sha256=zSr5GAiPVwvqXSN6qctkUh1My7c2tMyGETJB0Ir1Uvo,871
|
10
|
+
datahub/dbo/redis_stream.pyi,sha256=B3DJ5GQ_gnGqaPAGwgHwvTAVubMz99mAaoS8EK_2VaQ,734
|
11
|
+
datahub/dbo/sr.pyi,sha256=oYyQQbZwkempgVFfMECcKz9G9I7EEpF3touuCLlyY_0,5268
|
12
|
+
datahub/protos/client_pb2.pyi,sha256=CZTEbNX3LduN31Ir1gNb4iK9GFEbP75kc4yeuAwg-dA,220830
|
13
|
+
datahub/protos/common_pb2.pyi,sha256=KCzIIakHr0iViKFNFcK1ZotkqcQuZ9_XTNIfvyvcSbM,32839
|
14
|
+
datahub/protos/management_pb2.pyi,sha256=DtHNxR31C1T4HTUWT7KSsFPMvHiq37u_3G3aO__McA8,23183
|
15
|
+
datahub/protos/position_pb2.pyi,sha256=C4FCpOCjQrNtqvtjvxPZFbDG7aWBsjmQEBSzNVmRKp4,32252
|
16
|
+
datahub/protos/query_pb2.pyi,sha256=V6-yht8zbiCm02e7MTb1Ag_afoMnBFX1YsIETdom87I,15945
|
17
|
+
datahub/protos/quote_pb2.pyi,sha256=RULvl4NNbnE2O8sFuGfs8tZKJkwJoUyeadzUnHG_E-w,27254
|
18
|
+
datahub/protos/signal_pb2.pyi,sha256=HJxCtrEOlc1cBtH-ywFRvKItT0IiLyQVb0jzdkRF6mY,15879
|
19
|
+
datahub/protos/strategy_pb2.pyi,sha256=JmRoiuRdyE_1m6qQxxBMAvLp2OngDSHxTYivkcZQ2PU,32767
|
20
|
+
datahub/protos/trade_pb2.pyi,sha256=YLZFMLEMR3q1fSQxgyR81BsVvYngNQPbKPKvLA7ktjs,49810
|
21
|
+
datahub/utils/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
|
+
datahub/utils/logger.pyi,sha256=1rATh8QpyrOnfRWut5QcnnY7kfNaDq9sBu166znKypI,778
|
23
|
+
datahub/utils/sftp.pyi,sha256=J-lWxtTSZfnvqBRPmEHi1Tw5CpS0fsy6ySj-xnyXjZc,694
|
24
|
+
datahub/utils/monitor/__init__.pyi,sha256=EOwgf8CbJ4g3iUAaFoR6O-mYemJ9xjP42zlBj2KeA9c,76
|
25
|
+
datahub/utils/monitor/base.pyi,sha256=n1dKYK73JJ_7QPkCWFc-6Aj_a16j2z_VBaQ9zkN9A3E,310
|
26
|
+
datahub/utils/monitor/feishu.pyi,sha256=GgvJXYeX3cPOQjqpV0GJUr_Ri1_cZe2-viRBkpe6O_g,402
|
27
|
+
datahub.build/.gitignore,sha256=aEiIwOuxfzdCmLZe4oB1JsBmCUxwG8x-u-HBCV9JT8E,1
|
28
|
+
datahub_binary-1.4.9.dist-info/METADATA,sha256=fJXI17taUl48dejnemLFPZsOPOn7izrMB4TT8fQsQf0,806
|
29
|
+
datahub_binary-1.4.9.dist-info/WHEEL,sha256=wQGB_Dged6RIso_Q-D9Gk_VsGJ3cQzyC7g9I2lGvFV4,97
|
30
|
+
datahub_binary-1.4.9.dist-info/top_level.txt,sha256=J0rzqYfZghMgpObWaPGhQtV88I-KXrgArDvi_ddf6ZA,8
|
31
|
+
datahub_binary-1.4.9.dist-info/RECORD,,
|
@@ -1,16 +0,0 @@
|
|
1
|
-
datahub.cp312-win_amd64.pyd,sha256=82y2OZDtnBETYoaLReK71NMm-7v5Enq64XNliHVGZS4,1796608
|
2
|
-
datahub.pyi,sha256=8HXrC_9uuH03DtGCJIlr4-jb33B9rgHhs9ZZ4Q4li4A,1483
|
3
|
-
datahub/protos/client_pb2.pyi,sha256=CZTEbNX3LduN31Ir1gNb4iK9GFEbP75kc4yeuAwg-dA,220830
|
4
|
-
datahub/protos/common_pb2.pyi,sha256=KCzIIakHr0iViKFNFcK1ZotkqcQuZ9_XTNIfvyvcSbM,32839
|
5
|
-
datahub/protos/management_pb2.pyi,sha256=DtHNxR31C1T4HTUWT7KSsFPMvHiq37u_3G3aO__McA8,23183
|
6
|
-
datahub/protos/position_pb2.pyi,sha256=C4FCpOCjQrNtqvtjvxPZFbDG7aWBsjmQEBSzNVmRKp4,32252
|
7
|
-
datahub/protos/query_pb2.pyi,sha256=V6-yht8zbiCm02e7MTb1Ag_afoMnBFX1YsIETdom87I,15945
|
8
|
-
datahub/protos/quote_pb2.pyi,sha256=RULvl4NNbnE2O8sFuGfs8tZKJkwJoUyeadzUnHG_E-w,27254
|
9
|
-
datahub/protos/signal_pb2.pyi,sha256=HJxCtrEOlc1cBtH-ywFRvKItT0IiLyQVb0jzdkRF6mY,15879
|
10
|
-
datahub/protos/strategy_pb2.pyi,sha256=JmRoiuRdyE_1m6qQxxBMAvLp2OngDSHxTYivkcZQ2PU,32767
|
11
|
-
datahub/protos/trade_pb2.pyi,sha256=YLZFMLEMR3q1fSQxgyR81BsVvYngNQPbKPKvLA7ktjs,49810
|
12
|
-
datahub.build/.gitignore,sha256=aEiIwOuxfzdCmLZe4oB1JsBmCUxwG8x-u-HBCV9JT8E,1
|
13
|
-
datahub_binary-1.4.7.dist-info/METADATA,sha256=7QqbcNMxzUYT5vyXvUiku6_IiC1zL2TcyiEwiYjoVs8,806
|
14
|
-
datahub_binary-1.4.7.dist-info/WHEEL,sha256=MxVmlm1hxT_8bw-UkqNPc4xLJcr7HjPq7rr3bHdack4,97
|
15
|
-
datahub_binary-1.4.7.dist-info/top_level.txt,sha256=J0rzqYfZghMgpObWaPGhQtV88I-KXrgArDvi_ddf6ZA,8
|
16
|
-
datahub_binary-1.4.7.dist-info/RECORD,,
|
File without changes
|