diff --git a/CHANGELOG.md b/CHANGELOG.md index e34daba..b07b18b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# 2.0.1.3版本 + +1. 修复打包文件缺少lib的问题 +2. 使用zoneinfo替换pytz库 +3. 调整安装脚本setup.cfg,添加Python版本限制 +4. 增加Linux支持 + # 2.0.1.2版本 1. 调整安装脚本setup.py,支持Windows下安装时根据Python版本进行编译 diff --git a/README.md b/README.md index aae39ef..c64a468 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,8 @@

- - + +

@@ -17,7 +17,7 @@ ## 安装 -安装环境推荐基于3.0.0版本以上的【[**VeighNa Studio**](https://www.vnpy.com)】。 +安装环境推荐基于3.3.0版本以上的【[**VeighNa Studio**](https://www.vnpy.com)】。 直接使用pip命令: diff --git a/setup.cfg b/setup.cfg index 781feb9..74f346e 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = vnpy_ost -version = 2.0.1.2 +version = 2.0.1.3 url = https://www.vnpy.com license = MIT author = Xiaoyou Chen @@ -17,6 +17,7 @@ keywords = classifiers = Development Status :: 5 - Production/Stable Operating System :: Microsoft :: Windows + Operating System :: POSIX :: Linux Programming Language :: Python :: 3 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 @@ -31,7 +32,8 @@ classifiers = packages = find: include_package_data = True zip_safe = False -install_requires = +python_requires = >=3.7 +install_requires = importlib_metadata [options.package_data] diff --git a/setup.py b/setup.py index 96a6137..155b4ed 100644 --- a/setup.py +++ b/setup.py @@ -6,14 +6,26 @@ def get_ext_modules() -> list: """ 获取三方模块 - Windos需要编译使用 - Linux暂未支持 + Linux和Windows需要编译封装接口 Mac由于缺乏二进制库支持无法使用 """ - - extra_compile_flags = ["-O2", "-MT"] - extra_link_args = [] - runtime_library_dirs = [] + if platform.system() == "Linux": + extra_compile_flags = [ + "-std=c++17", + "-O3", + "-Wno-delete-incomplete", + "-Wno-sign-compare", + ] + extra_link_args = ["-lstdc++"] + runtime_library_dirs = ["$ORIGIN"] + + elif platform.system() == "Windows": + extra_compile_flags = ["-O2", "-MT"] + extra_link_args = [] + runtime_library_dirs = [] + + else: + return [] vnostmd = Extension( name="vnpy_ost.api.vnostmd", diff --git a/vnpy_ost/gateway/ost_gateway.py b/vnpy_ost/gateway/ost_gateway.py index 239222f..43087b6 100644 --- a/vnpy_ost/gateway/ost_gateway.py +++ b/vnpy_ost/gateway/ost_gateway.py @@ -1,4 +1,3 @@ -import pytz from datetime import datetime from typing import Dict, List, Tuple, Any from pathlib import Path @@ -12,7 +11,6 @@ Status ) from vnpy.trader.gateway import BaseGateway - from vnpy.trader.object import ( TickData, OrderData, @@ -24,8 +22,9 @@ CancelRequest, SubscribeRequest, ) -from vnpy.trader.utility import get_folder_path +from vnpy.trader.utility import get_folder_path, ZoneInfo from vnpy.trader.event import EVENT_TIMER + from ..api import MdApi, TdApi # 委托状态映射 @@ -70,7 +69,7 @@ } # 中国时区 -CHINA_TZ = pytz.timezone("Asia/Shanghai") +CHINA_TZ = ZoneInfo("Asia/Shanghai") # 合约数据全局缓存字典 symbol_contract_map: Dict[str, ContractData] = {} @@ -78,7 +77,7 @@ class OstGateway(BaseGateway): """ - vn.py用于对接东方证券OST的交易接口。 + VeighNa用于对接东方证券OST的交易接口。 """ default_name: str = "OST" @@ -213,7 +212,7 @@ def onRtnL2MarketData(self, data: dict) -> None: timestamp: str = f"{self.current_date}{data['OrigTime']}" dt: datetime = datetime.strptime(timestamp, "%Y%m%d%H%M%S") - dt: datetime = CHINA_TZ.localize(dt) + dt: datetime = dt.replace(tzinfo=CHINA_TZ) tick: TickData = TickData( symbol=symbol, @@ -428,7 +427,6 @@ def onRspQryInstrument(self, data: dict, error: dict, reqid: int, last: bool) -> ) self.gateway.on_contract(contract) - symbol_contract_map[contract.symbol] = contract if last: @@ -459,9 +457,9 @@ def onRtnOrder(self, data: dict) -> None: timestamp: str = f"{data['TradingDay']} {data['InsertTime']}" dt: datetime = datetime.strptime(timestamp, "%Y%m%d %H%M%S%f") - dt: datetime = CHINA_TZ.localize(dt) + dt: datetime = dt.replace(tzinfo=CHINA_TZ) - tp = (data["OrderPriceType"], data["TimeCondition"], data["VolumeCondition"]) + tp: tuple = (data["OrderPriceType"], data["TimeCondition"], data["VolumeCondition"]) order: OrderData = OrderData( symbol=symbol, @@ -496,7 +494,7 @@ def onRtnTrade(self, data: dict) -> None: timestamp: str = f"{data['TradeDate']} {data['TradeTime']}" dt: datetime = datetime.strptime(timestamp, "%Y%m%d %H%M%S%f") - dt: datetime = CHINA_TZ.localize(dt) + dt: datetime = dt.replace(tzinfo=CHINA_TZ) trade: TradeData = TradeData( symbol=symbol, @@ -551,12 +549,12 @@ def send_order(self, req: OrderRequest) -> str: return "" if not req.direction: - self.gateway.write_log(f"请选择买卖方向") + self.gateway.write_log("请选择买卖方向") return "" self.order_ref += 1 - tp = ORDERTYPE_VT2OST[req.type] + tp: tuple = ORDERTYPE_VT2OST[req.type] price_type, time_condition, volume_condition = tp ost_req: dict = {