datahub_binary 1.4.8__cp312-cp312-win_amd64.whl → 1.4.10__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 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]: ...
@@ -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,55 @@
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_trading_days(self, start_date: date, end_date: date, market: str = 'XSHG') -> list[date]: ...
42
+ 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: ...
43
+ def get_md_transaction(self, start_date: date, end_date: date, instruments: Sequence[str] = (), markets: Sequence[str] = ()) -> pl.DataFrame: ...
44
+ 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: ...
45
+ def get_instrument_list(self, trade_date: date, indicators: Sequence[str] = ()) -> Sequence[str]: ...
46
+ def get_universe(self, trade_date: date, universe: str | None = None) -> pl.DataFrame: ...
47
+ 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: ...
48
+ def get_md_snapshot(self, start_date: date, end_date: date, instruments: Sequence[str] = (), markets: Sequence[str] = ()) -> pl.DataFrame: ...
49
+ def get_seq_snapshot(self, start_date: date, end_date: date, instruments: Sequence[str] = ()) -> pl.DataFrame: ...
50
+ def get_resample_lob(self, resample_type: str, start_date: date, end_date: date, instruments: Sequence[str] = ()) -> pl.DataFrame: ...
51
+ def get_last_seq_snapshot(self, end_time: datetime, instruments: Sequence[str] = (), is_filter_limit: bool = False) -> pl.DataFrame: ...
52
+ def get_loads(self, label: str) -> pl.DataFrame: ...
53
+ def stream_load(self, database: str, table: str, file_path: str): ...
54
+ 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: ...
55
+ 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
@@ -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,2 @@
1
+ from .base import Monitor as Monitor
2
+ from .feishu import Feishu as Feishu
@@ -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: ...
Binary file
datahub.pyi CHANGED
@@ -17,7 +17,6 @@ __name__ = ...
17
17
 
18
18
  # Modules used internally, to allow implicit dependencies to be seen:
19
19
  import os
20
- import _frozen_importlib_external
21
20
  import datetime
22
21
  import time
23
22
  import dataclasses
@@ -0,0 +1,252 @@
1
+ Metadata-Version: 2.4
2
+ Name: datahub_binary
3
+ Version: 1.4.10
4
+ Summary: A comprehensive Python library for data processing, integration, and management.
5
+ Requires-Python: <3.13,>=3.9
6
+ Description-Content-Type: text/markdown
7
+ Requires-Dist: SQLAlchemy>=1.0.0
8
+ Requires-Dist: httpx[socks]>=0.28.0
9
+ Requires-Dist: starrocks>=1.0.0
10
+ Requires-Dist: polars-lts-cpu>=1.0.0; sys_platform == "darwin"
11
+ Requires-Dist: polars>=1.0.0; sys_platform != "darwin"
12
+ Requires-Dist: loguru>=0.7.3
13
+ Requires-Dist: numpy>=2.0.0
14
+ Requires-Dist: protobuf>=6.30.1
15
+ Requires-Dist: redis>=5.2.1
16
+ Requires-Dist: psycopg2-binary>=2.9.10
17
+ Requires-Dist: paramiko>=3.5.1
18
+ Requires-Dist: toml>=0.10.0
19
+ Requires-Dist: pydantic>=2.11.3
20
+ Requires-Dist: lark-oapi>=1.4.14
21
+ Requires-Dist: pyzmq>=26.4.0
22
+ Requires-Dist: sortedcontainers>=2.4.0
23
+
24
+ ### 使用示例
25
+
26
+ ```python3
27
+ import os
28
+ from datetime import datetime
29
+
30
+ import polars as pl
31
+
32
+ os.environ["LOGURU_LEVEL"] = "TRACE"
33
+
34
+ from datahub import *
35
+
36
+
37
+ def main():
38
+ starrocks_setting = StarRocksSetting(
39
+ host="xxx",
40
+ db_port=9030,
41
+ http_port=8040,
42
+ username="xxx",
43
+ password="xxx",
44
+ # sftp=sftp_setting # 设置sftp后会启用大查询缓存
45
+ )
46
+
47
+ setting = Setting(
48
+ starrocks=starrocks_setting,
49
+ )
50
+ datahub = DataHub(setting)
51
+ start_time = datetime(2024, 12, 19)
52
+ end_time = datetime(2024, 12, 29)
53
+ # pl.Config.set_tbl_cols(-1) # -1 表示显示所有列
54
+ # pl.Config.set_fmt_str_lengths(100) # 设置字符串显示长度
55
+ # pl.Config.set_tbl_width_chars(200) # 设置表格宽度字符数
56
+
57
+ # 发送监控报警
58
+ # mylogger = logger.Logger("test")
59
+ # mylogger.monitor.to("alpha运维").info("test")
60
+ # mylogger.monitor.to("alpha运维").at("all").error("test")
61
+
62
+ print("获取交易日")
63
+ result = datahub.get_trading_days(start_time, end_time)
64
+ print(result)
65
+
66
+ print("获取指定日期, 指定indicator 可用标的")
67
+ result = datahub.get_instrument_list(
68
+ trade_date=start_time.date(),
69
+ indicators=["premiums_income"],
70
+ )
71
+ print(result)
72
+
73
+ print("获取指定日期标的信息")
74
+ result = datahub.get_instrument_info(
75
+ trade_date=start_time.date(), market="XSHG", instrument_type="spot")
76
+ print(result)
77
+
78
+ print("获取指定日期标的池")
79
+ result = datahub.get_universe(trade_date=datetime(
80
+ 2025, 2, 20), universe="basic_alpha")
81
+ print(result)
82
+
83
+ print("获取某日逐笔成交")
84
+ result = datahub.get_md_transaction(
85
+ start_date=datetime(2025, 1, 27).date(),
86
+ instruments=["508086.XSHG"],
87
+ )
88
+ print(result)
89
+
90
+ print("获取某日快照行情")
91
+ result = datahub.get_md_snapshot(
92
+ start_date=datetime(2025, 1, 27).date(),
93
+ instruments=["508086.XSHG"],
94
+ )
95
+ print(result)
96
+
97
+ print("获取某日快照行情")
98
+ result = datahub.get_trading_days(
99
+ start_date=start_time.date(),
100
+ end_date=end_time.date(),
101
+ )
102
+ print(result)
103
+
104
+ print("获取指标值")
105
+ result = datahub.get_indicator_data(
106
+ start_time=start_time,
107
+ end_time=end_time,
108
+ # indicators=["5min_stat_open"],
109
+ instruments=["600519.XSHG"],
110
+ types=["5min_stat"]
111
+ )
112
+ print(result)
113
+
114
+ print("获取BarDataMatrix")
115
+ bar_data = datahub.get_indicator_matrix(
116
+ trade_time=datetime(2024, 12, 19, 10),
117
+ indicators=["5min_stat_open", "5min_stat_low"],
118
+ instrument_ids=["600519.XSHG", "000001.XSHE", "000002.XSHG"],
119
+ )
120
+ print(bar_data)
121
+
122
+ print("获取BarDataMatrix列表")
123
+ bar_data = datahub.get_indicator_matrix_list(
124
+ start_date=datetime(2024, 12, 19, 10),
125
+ end_date=datetime(2024, 12, 20, 10),
126
+ indicators=["5min_stat_open", "5min_stat_low"],
127
+ instrument_ids=["600519.XSHG", "000001.XSHE", "000002.XSHG"],
128
+ )
129
+ print(bar_data)
130
+
131
+ print("获取因子值")
132
+ result = datahub.get_factor_data(
133
+ start_time=start_time,
134
+ end_time=end_time,
135
+ # factors=["5min_stat_open"],
136
+ instruments=["600519.XSHG"],
137
+ types=["5min_stat"]
138
+ )
139
+ print(result)
140
+
141
+ print("获取因子值矩阵")
142
+ result = datahub.get_factor_matrix(
143
+ trade_time=datetime(2024, 12, 19, 10),
144
+ factors=["5min_stat_open", "5min_stat_low"],
145
+ instrument_ids=["600519.XSHG", "000001.XSHE", "000002.XSHG"],
146
+ )
147
+ print(result)
148
+
149
+ print("获取收益率数据")
150
+ result = datahub.get_return_data(
151
+ start_time=start_time,
152
+ end_time=end_time,
153
+ instruments=["600519.XSHG"],
154
+ )
155
+ print(result)
156
+
157
+ print("获取收益率矩阵")
158
+ result = datahub.get_return_matrix(
159
+ trade_time=datetime(2024, 10, 31, 19, 15),
160
+ factors=["forward_ret_raw_1d"],
161
+ instrument_ids=["600519.XSHG", "000001.XSHE", "000002.XSHG"],
162
+ )
163
+ print(result)
164
+
165
+ print("获取K线")
166
+ result = datahub.get_kline(
167
+ "5min", instruments=["600519.XSHG", "603350.XSHG"],
168
+ start_time=start_time, end_time=end_time, adj_method="backward"
169
+ )
170
+ print(result)
171
+
172
+ print("获取指标信息")
173
+ result = datahub.get_indicator_info()
174
+ print(result)
175
+
176
+ print("获取指标类型信息")
177
+ result = datahub.get_indicator_type()
178
+ print(result)
179
+
180
+ print("获取因子类型信息")
181
+ result = datahub.get_factor_type()
182
+ print(result)
183
+
184
+ print("获取行业分类信息")
185
+ result = datahub.get_instrument_industry(datetime(2018, 1, 5).date())
186
+ print(result)
187
+
188
+ print("获取交易日")
189
+ result = datahub.calendar.get_latest_trade_date(
190
+ dt=datetime(2025, 1, 4).date())
191
+ print(result)
192
+
193
+ print("获取主力期货合约信息")
194
+ result = datahub.get_future_domain_info("IC")
195
+ print(result)
196
+
197
+ print("获取主力期货快照行情")
198
+ result = datahub.get_future_snapshot(
199
+ "IC", start_date=start_time.date(), end_date=end_time.date())
200
+ print(result)
201
+
202
+ print("获取return_factor的数据")
203
+ df = datahub.get_return_matrix(
204
+ trade_time=datetime(2018, 1, 29, 9, 35),
205
+ factors=["ret_raw_1d", "ret_raw_3d", "ret_raw_5d"],
206
+ instrument_ids=["600519.XSHG", "000001.XSHE", "000002.XSHG"],
207
+ )
208
+ print(df)
209
+
210
+ print("获取risk_factor的数据")
211
+ df = datahub.get_risk_factor_matrix(
212
+ version="rq_v2_sws2021",
213
+ trade_time=datetime(2018, 1, 11, 20),
214
+ factors=["liquidity", "longterm_reversal", "mid_cap"],
215
+ instrument_ids=["600519.XSHG", "000001.XSHE", "000002.XSHG"],
216
+ )
217
+ print(df)
218
+
219
+ print("获取最新黑名单列表, 可以指定日期")
220
+ df = datahub.get_blacklist(blacklist_ids=["cms_dma_blacklist", "XXX"], end_date=None)
221
+ print(df)
222
+
223
+ print("获取券池列表, 可以指定券池和日期")
224
+ df = datahub.get_sbl_list(end_date=datetime(2025, 1, 1))
225
+ print(df)
226
+
227
+ print("获取seq y")
228
+ df = datahub.get_seq_y_info(resample_type="time_interval_ms_500",)
229
+ print(df)
230
+
231
+ print("获取seq factor info")
232
+ df = datahub.get_seq_factor_info(resample_type="time_interval_ms_500",)
233
+ print(df)
234
+
235
+ print("获取 seq factor")
236
+ df = datahub.get_seq_factor_data(
237
+ start_time=datetime(2025, 2, 10, 9, 30, 9, 920000),
238
+ end_time=datetime(2025, 2, 10, 9, 30, 11, 920000),
239
+ factors=["ActiveCashFlowFactors__lookback_tick_30s__time_interval_ms_500__buy_amount"],
240
+ instruments=["000029.XSHE"]
241
+ )
242
+ print(df)
243
+
244
+ print("获取get_seq_y_stat")
245
+ df = datahub.get_seq_y_stat(start_time=datetime(2025, 1, 10, 23), end_time=datetime(2025, 1, 10, 23),
246
+ stat_type="std_1d")
247
+ print(df)
248
+
249
+
250
+ if __name__ == "__main__":
251
+ main()
252
+ ```
@@ -0,0 +1,31 @@
1
+ datahub.cp312-win_amd64.pyd,sha256=kWmDuLEYfXKYeLaNn3CC5wSy8aOktPyw_1yrt7CuRtg,1786880
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=S-xVb0WDkxgusdot4FGQJ6dyTsMdehFUybllWYPe-BU,5375
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.10.dist-info/METADATA,sha256=D70IvDmHs7fjTK9H6VP9FsCGJ0V4Tg51llWqNjaFZFM,7841
29
+ datahub_binary-1.4.10.dist-info/WHEEL,sha256=wQGB_Dged6RIso_Q-D9Gk_VsGJ3cQzyC7g9I2lGvFV4,97
30
+ datahub_binary-1.4.10.dist-info/top_level.txt,sha256=J0rzqYfZghMgpObWaPGhQtV88I-KXrgArDvi_ddf6ZA,8
31
+ datahub_binary-1.4.10.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: Nuitka (2.7.10)
2
+ Generator: Nuitka (2.7.11)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp312-cp312-win_amd64
5
5
 
@@ -1,22 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: datahub_binary
3
- Version: 1.4.8
4
- Summary: A comprehensive Python library for data processing, integration, and management.
5
- Requires-Python: <3.13,>=3.9
6
- Description-Content-Type: text/markdown
7
- Requires-Dist: SQLAlchemy>=1.0.0
8
- Requires-Dist: httpx[socks]>=0.28.0
9
- Requires-Dist: starrocks>=1.0.0
10
- Requires-Dist: polars-lts-cpu>=1.0.0; sys_platform == "darwin"
11
- Requires-Dist: polars>=1.0.0; sys_platform != "darwin"
12
- Requires-Dist: loguru>=0.7.3
13
- Requires-Dist: numpy>=2.0.0
14
- Requires-Dist: protobuf>=6.30.1
15
- Requires-Dist: redis>=5.2.1
16
- Requires-Dist: psycopg2-binary>=2.9.10
17
- Requires-Dist: paramiko>=3.5.1
18
- Requires-Dist: toml>=0.10.0
19
- Requires-Dist: pydantic>=2.11.3
20
- Requires-Dist: lark-oapi>=1.4.14
21
- Requires-Dist: pyzmq>=26.4.0
22
- Requires-Dist: sortedcontainers>=2.4.0
@@ -1,16 +0,0 @@
1
- datahub.cp312-win_amd64.pyd,sha256=HLIUeeWOqFlvIXkoSkS765KS8RYJIH_XwPwkumRMcQA,1788416
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.8.dist-info/METADATA,sha256=_XcmsNuyj1wFaluQ2Qb6L4_lrY3tGvkPQGD6F2kTE5E,806
14
- datahub_binary-1.4.8.dist-info/WHEEL,sha256=MxVmlm1hxT_8bw-UkqNPc4xLJcr7HjPq7rr3bHdack4,97
15
- datahub_binary-1.4.8.dist-info/top_level.txt,sha256=J0rzqYfZghMgpObWaPGhQtV88I-KXrgArDvi_ddf6ZA,8
16
- datahub_binary-1.4.8.dist-info/RECORD,,