xtquant-share 1.2.2__tar.gz → 1.2.3__tar.gz

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.
Files changed (26) hide show
  1. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/PKG-INFO +1 -1
  2. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/pyproject.toml +1 -1
  3. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/xqshare/server.py +35 -17
  4. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/xtquant_share.egg-info/PKG-INFO +1 -1
  5. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/LICENSE +0 -0
  6. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/README.md +0 -0
  7. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/setup.cfg +0 -0
  8. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/tests/test_auth.py +0 -0
  9. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/tests/test_client.py +0 -0
  10. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/tests/test_client_permission.py +0 -0
  11. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/tests/test_integration.py +0 -0
  12. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/tests/test_server.py +0 -0
  13. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/tests/test_server_permission.py +0 -0
  14. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/tests/test_tools_common.py +0 -0
  15. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/xqshare/__init__.py +0 -0
  16. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/xqshare/auth.py +0 -0
  17. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/xqshare/client.py +0 -0
  18. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/xqshare/tools/__init__.py +0 -0
  19. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/xqshare/tools/common.py +0 -0
  20. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/xqshare/tools/xtdata.py +0 -0
  21. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/xqshare/tools/xttrader.py +0 -0
  22. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/xtquant_share.egg-info/SOURCES.txt +0 -0
  23. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/xtquant_share.egg-info/dependency_links.txt +0 -0
  24. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/xtquant_share.egg-info/entry_points.txt +0 -0
  25. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/xtquant_share.egg-info/requires.txt +0 -0
  26. {xtquant_share-1.2.2 → xtquant_share-1.2.3}/xtquant_share.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xtquant-share
3
- Version: 1.2.2
3
+ Version: 1.2.3
4
4
  Summary: Xtreme Quant Share - eXtreme transparent sharing proxy for XtQuant on macOS/Linux
5
5
  Author-email: Jason Hu <63170682@qq.com>
6
6
  License-Expression: GPL-3.0-only
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "xtquant-share"
7
- version = "1.2.2"
7
+ version = "1.2.3"
8
8
  description = "Xtreme Quant Share - eXtreme transparent sharing proxy for XtQuant on macOS/Linux"
9
9
  readme = "README.md"
10
10
  license = "GPL-3.0-only"
@@ -921,8 +921,8 @@ def _cmd_background(args):
921
921
  cmd += ["--key", args.key]
922
922
  if args.log_level != "INFO":
923
923
  cmd += ["--log-level", args.log_level]
924
- if args.env_file != ".env":
925
- cmd += ["--env-file", args.env_file]
924
+ # 始终透传 env_file(已经是绝对路径或确定的路径)
925
+ cmd += ["--env-file", args.env_file]
926
926
 
927
927
  with open(log_file, "a", encoding="utf-8") as log_f:
928
928
  if sys.platform == "win32":
@@ -947,7 +947,7 @@ def _cmd_background(args):
947
947
 
948
948
  print(f" xqshare-server 已在后台启动 (PID: {proc.pid})")
949
949
  print(f" 日志文件: {log_file}")
950
- print(f" 查看日志: xqshare-server logs")
950
+ print(f" 查看日志: xqshare-server logs -f")
951
951
  print(f" 停止服务: xqshare-server stop")
952
952
 
953
953
 
@@ -1061,6 +1061,17 @@ def _cmd_status(args):
1061
1061
  print(f" 执行 xqshare-server stop 清理残留文件")
1062
1062
 
1063
1063
 
1064
+ def _default_env_file():
1065
+ """默认 .env 文件路径:优先查找 exe/脚本所在目录,其次当前目录"""
1066
+ import sys
1067
+ # 获取可执行文件所在目录(pip install 后是 Scripts/ 目录)
1068
+ exe_dir = os.path.dirname(os.path.abspath(sys.executable))
1069
+ exe_env = os.path.join(exe_dir, ".env")
1070
+ if os.path.exists(exe_env):
1071
+ return exe_env
1072
+ return ".env"
1073
+
1074
+
1064
1075
  def main():
1065
1076
  """命令行入口函数"""
1066
1077
  import argparse
@@ -1070,25 +1081,28 @@ def main():
1070
1081
  formatter_class=argparse.RawDescriptionHelpFormatter,
1071
1082
  epilog="""
1072
1083
  示例:
1073
- xqshare-server # 前台启动(默认)
1074
- xqshare-server start # 前台启动
1075
- xqshare-server background # 后台启动
1084
+ xqshare-server start # 后台启动(推荐)
1085
+ xqshare-server start --port 18813 # 指定端口后台启动
1076
1086
  xqshare-server stop # 停止后台服务
1077
1087
  xqshare-server status # 查看运行状态
1078
1088
  xqshare-server logs # 查看最近 50 行日志
1079
1089
  xqshare-server logs -f # 实时跟踪日志(tail -f)
1080
1090
  xqshare-server logs -n 100 # 查看最近 100 行日志
1081
- xqshare-server --port 18813 # 指定端口前台启动
1091
+ xqshare-server fg # 前台启动(调试用)
1082
1092
 
1083
1093
  环境变量:
1084
1094
  XQSHARE_PORT 服务端口 (默认: 18812)
1085
1095
  QMT_USERDATA_PATH QMT userdata_mini 目录路径
1096
+
1097
+ .env 文件查找顺序:
1098
+ 1. xqshare-server.exe 所在目录(如 C:\\install\\qmt_venv\\Scripts\\.env)
1099
+ 2. 当前工作目录
1086
1100
  """
1087
1101
  )
1088
1102
 
1089
1103
  subparsers = parser.add_subparsers(dest="command")
1090
1104
 
1091
- # 公共参数(start 和 background 共用)
1105
+ # 公共参数(start 和 fg 共用)
1092
1106
  def add_server_args(p):
1093
1107
  p.add_argument("--host", default="0.0.0.0", help="监听地址 (默认: 0.0.0.0)")
1094
1108
  p.add_argument("--port", type=int, default=None, help="监听端口 (默认: 18812 或 XQSHARE_PORT)")
@@ -1096,15 +1110,15 @@ def main():
1096
1110
  p.add_argument("--cert", help="SSL 证书文件")
1097
1111
  p.add_argument("--key", help="SSL 私钥文件")
1098
1112
  p.add_argument("--log-level", default="INFO", help="日志级别 (默认: INFO)")
1099
- p.add_argument("--env-file", default=".env", help="环境变量文件 (默认: .env)")
1113
+ p.add_argument("--env-file", default=None, help="环境变量文件 (默认: 自动查找 exe 目录或当前目录的 .env)")
1100
1114
 
1101
- # start 子命令(前台)
1102
- start_parser = subparsers.add_parser("start", help="前台启动 server")
1115
+ # start 子命令(后台,推荐)
1116
+ start_parser = subparsers.add_parser("start", help="后台启动 server(推荐)", aliases=["background", "bg"])
1103
1117
  add_server_args(start_parser)
1104
1118
 
1105
- # background 子命令(后台)
1106
- bg_parser = subparsers.add_parser("background", help="后台启动 server", aliases=["bg"])
1107
- add_server_args(bg_parser)
1119
+ # fg 子命令(前台,调试用)
1120
+ fg_parser = subparsers.add_parser("fg", help="前台启动 server(调试用)", aliases=["foreground"])
1121
+ add_server_args(fg_parser)
1108
1122
 
1109
1123
  # stop 子命令
1110
1124
  subparsers.add_parser("stop", help="停止后台运行的 server")
@@ -1124,11 +1138,15 @@ def main():
1124
1138
  parser.add_argument("--cert", help="SSL 证书文件")
1125
1139
  parser.add_argument("--key", help="SSL 私钥文件")
1126
1140
  parser.add_argument("--log-level", default="INFO", help="日志级别 (默认: INFO)")
1127
- parser.add_argument("--env-file", default=".env", help="环境变量文件 (默认: .env)")
1141
+ parser.add_argument("--env-file", default=None, help="环境变量文件 (默认: 自动查找 exe 目录或当前目录的 .env)")
1128
1142
 
1129
1143
  args = parser.parse_args()
1130
1144
 
1131
- if args.command in ("background", "bg"):
1145
+ # --env-file 未指定时自动查找
1146
+ if not hasattr(args, 'env_file') or args.env_file is None:
1147
+ args.env_file = _default_env_file()
1148
+
1149
+ if args.command in ("start", "background", "bg"):
1132
1150
  _cmd_background(args)
1133
1151
  elif args.command == "stop":
1134
1152
  _cmd_stop(args)
@@ -1137,7 +1155,7 @@ def main():
1137
1155
  elif args.command == "logs":
1138
1156
  _cmd_logs(args)
1139
1157
  else:
1140
- # start 或无子命令,均为前台启动
1158
+ # fg / foreground 或无子命令,均为前台启动
1141
1159
  start_server(
1142
1160
  host=args.host,
1143
1161
  port=args.port,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xtquant-share
3
- Version: 1.2.2
3
+ Version: 1.2.3
4
4
  Summary: Xtreme Quant Share - eXtreme transparent sharing proxy for XtQuant on macOS/Linux
5
5
  Author-email: Jason Hu <63170682@qq.com>
6
6
  License-Expression: GPL-3.0-only
File without changes
File without changes
File without changes