cfquant 0.2.0__py3-none-any.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.
Files changed (90) hide show
  1. LTtx/__init__.py +2 -0
  2. LTtx/tx/Config.txt +8 -0
  3. LTtx/tx/LTtx_server.py +1177 -0
  4. LTtx/tx/__init__.py +5 -0
  5. LTtx/tx/tx.py +1935 -0
  6. cfquant/__init__.py +26 -0
  7. cfquant/account_routing.py +119 -0
  8. cfquant/channels.py +76 -0
  9. cfquant/cli.py +266 -0
  10. cfquant/client.py +365 -0
  11. cfquant/config.py +86 -0
  12. cfquant/hub.py +304 -0
  13. cfquant/logging_i18n.py +348 -0
  14. cfquant/normal_bridge.py +676 -0
  15. cfquant/pipe_bridge.py +249 -0
  16. cfquant/pipe_client.py +223 -0
  17. cfquant/pipe_hub.py +602 -0
  18. cfquant/pipe_transport.py +493 -0
  19. cfquant/protocol.py +238 -0
  20. cfquant/qmt_bridge.py +1081 -0
  21. cfquant/runtime_report.py +334 -0
  22. cfquant/tx.py +1898 -0
  23. cfquant/tx_trade_bridge.py +1905 -0
  24. cfquant/version.py +5 -0
  25. cfquant/xtconstant.py +262 -0
  26. cfquant/xtdata.py +462 -0
  27. cfquant/xttrader.py +955 -0
  28. cfquant/xttype.py +586 -0
  29. cfquant-0.2.0.dist-info/LICENSE +21 -0
  30. cfquant-0.2.0.dist-info/METADATA +144 -0
  31. cfquant-0.2.0.dist-info/RECORD +90 -0
  32. cfquant-0.2.0.dist-info/WHEEL +5 -0
  33. cfquant-0.2.0.dist-info/entry_points.txt +4 -0
  34. cfquant-0.2.0.dist-info/top_level.txt +6 -0
  35. cfquant_pipe_hub.py +45 -0
  36. cfquant_web_server.py +12137 -0
  37. qmt_scripts/CFQUANT.py +507 -0
  38. qmt_scripts/CFQUANT_CTYPE_ALL_LOWLAT.py +830 -0
  39. qmt_scripts/CFQUANT_LITE.py +4928 -0
  40. qmt_scripts/CFQUANT_TRADE_LOWLAT.py +382 -0
  41. qmt_scripts/__init__.py +1 -0
  42. qmt_scripts//321/205/320/240/320/234/321/210/342/224/244/320/266/321/205/320/237/342/225/226/321/207/320/233/320/274/321/207/320/273/320/233/321/205/342/225/225/320/222/321/205/320/254/342/225/221/CFQUANT_CTYPE_ALL_LOWLAT_SH.py +866 -0
  43. qmt_scripts//321/205/320/240/320/234/321/210/342/224/244/320/266/321/205/320/237/342/225/226/321/207/320/233/320/274/321/207/320/273/320/233/321/205/342/225/225/320/222/321/205/320/254/342/225/221/CFQUANT_CTYPE_ALL_LOWLAT_SZ.py +866 -0
  44. qmt_scripts//321/205/320/240/320/234/321/210/342/224/244/320/266/321/205/320/237/342/225/226/321/207/320/233/320/274/321/207/320/273/320/233/321/205/342/225/225/320/222/321/205/320/254/342/225/221/CFQUANT_LITE_SH.py +5020 -0
  45. qmt_scripts//321/205/320/240/320/234/321/210/342/224/244/320/266/321/205/320/237/342/225/226/321/207/320/233/320/274/321/207/320/273/320/233/321/205/342/225/225/320/222/321/205/320/254/342/225/221/CFQUANT_LITE_SZ.py +5020 -0
  46. qmt_scripts//321/205/320/240/320/234/321/210/342/224/244/320/266/321/205/320/237/342/225/226/321/207/320/233/320/274/321/207/320/273/320/233/321/205/342/225/225/320/222/321/205/320/254/342/225/221/CFQUANT_TRADE_LOWLAT_SH.py +436 -0
  47. qmt_scripts//321/205/320/240/320/234/321/210/342/224/244/320/266/321/205/320/237/342/225/226/321/207/320/233/320/274/321/207/320/273/320/233/321/205/342/225/225/320/222/321/205/320/254/342/225/221/CFQUANT_TRADE_LOWLAT_SZ.py +436 -0
  48. qmt_scripts//321/205/320/240/320/234/321/210/342/224/244/320/266/321/205/320/237/342/225/226/321/207/320/233/320/274/321/207/320/273/320/233/321/205/342/225/225/320/222/321/205/320/254/342/225/221/readme.md +95 -0
  49. web_dashboard/__init__.py +1 -0
  50. web_dashboard/app.js +9847 -0
  51. web_dashboard/avatars/amber-pulse.svg +15 -0
  52. web_dashboard/avatars/copper-grid.svg +15 -0
  53. web_dashboard/avatars/market-blue.svg +15 -0
  54. web_dashboard/avatars/rose-circuit.svg +15 -0
  55. web_dashboard/avatars/signal-green.svg +15 -0
  56. web_dashboard/avatars/slate-wave.svg +15 -0
  57. web_dashboard/avatars/teal-orbit.svg +16 -0
  58. web_dashboard/avatars/violet-node.svg +15 -0
  59. web_dashboard/favicon.svg +5 -0
  60. web_dashboard/image/qmt_deploy/image-10.png +0 -0
  61. web_dashboard/image/qmt_deploy/image-11.png +0 -0
  62. web_dashboard/image/qmt_deploy/image-12.png +0 -0
  63. web_dashboard/image/qmt_deploy/image-13.png +0 -0
  64. web_dashboard/image/qmt_deploy/image-14.png +0 -0
  65. web_dashboard/image/qmt_deploy/image-15.png +0 -0
  66. web_dashboard/image/qmt_deploy/image-16.png +0 -0
  67. web_dashboard/image/qmt_deploy/image-17.png +0 -0
  68. web_dashboard/image/qmt_deploy/image-18.png +0 -0
  69. web_dashboard/image/qmt_deploy/image-19.png +0 -0
  70. web_dashboard/image/qmt_deploy/image-20.png +0 -0
  71. web_dashboard/image/qmt_deploy/image-21.png +0 -0
  72. web_dashboard/image/qmt_deploy/image-4.png +0 -0
  73. web_dashboard/image/qmt_deploy/image-5.png +0 -0
  74. web_dashboard/image/qmt_deploy/image-6.png +0 -0
  75. web_dashboard/image/qmt_deploy/image-7.png +0 -0
  76. web_dashboard/image/qmt_deploy/image-8.png +0 -0
  77. web_dashboard/image/qmt_deploy/image-9.png +0 -0
  78. web_dashboard/image//321/211/320/220/320/252/321/207/320/244/320/270/321/206/320/270/320/261/321/205/342/225/235/320/237/321/211/320/223/320/270/321/207/342/225/234/342/226/223/321/206/320/234/320/227/321/205/320/235/320/247/image-1.png +0 -0
  79. web_dashboard/image//321/211/320/220/320/252/321/207/320/244/320/270/321/206/320/270/320/261/321/205/342/225/235/320/237/321/211/320/223/320/270/321/207/342/225/234/342/226/223/321/206/320/234/320/227/321/205/320/235/320/247/image-2.png +0 -0
  80. web_dashboard/image//321/211/320/220/320/252/321/207/320/244/320/270/321/206/320/270/320/261/321/205/342/225/235/320/237/321/211/320/223/320/270/321/207/342/225/234/342/226/223/321/206/320/234/320/227/321/205/320/235/320/247/image-3.png +0 -0
  81. web_dashboard/image//321/211/320/220/320/252/321/207/320/244/320/270/321/206/320/270/320/261/321/205/342/225/235/320/237/321/211/320/223/320/270/321/207/342/225/234/342/226/223/321/206/320/234/320/227/321/205/320/235/320/247/image.png +0 -0
  82. web_dashboard/image//321/211/320/223/320/270/321/207/342/225/234/342/226/223/321/206/320/234/320/227/321/205/320/235/320/247/1783479325179.png +0 -0
  83. web_dashboard/image//321/211/320/223/320/270/321/207/342/225/234/342/226/223/321/206/320/234/320/227/321/205/320/235/320/247/1783479745262.png +0 -0
  84. web_dashboard/image//321/211/320/223/320/270/321/207/342/225/234/342/226/223/321/206/320/234/320/227/321/205/320/235/320/247/1783480178700.png +0 -0
  85. web_dashboard/image//321/211/320/223/320/270/321/207/342/225/234/342/226/223/321/206/320/234/320/227/321/205/320/235/320/247/1783480428759.png +0 -0
  86. web_dashboard/image//321/211/320/223/320/270/321/207/342/225/234/342/226/223/321/206/320/234/320/227/321/205/320/235/320/247/1783489807217.png +0 -0
  87. web_dashboard/image//321/211/320/223/320/270/321/207/342/225/234/342/226/223/321/206/320/234/320/227/321/205/320/235/320/247/1783490503491.png +0 -0
  88. web_dashboard/index.html +2317 -0
  89. web_dashboard/styles.css +7817 -0
  90. web_dashboard/vendor/mermaid.min.js +2029 -0
@@ -0,0 +1,144 @@
1
+ Metadata-Version: 2.1
2
+ Name: cfquant
3
+ Version: 0.2.0
4
+ Summary: QMT local bridge and xtquant-compatible Python client.
5
+ License: MIT
6
+ Requires-Python: >=3.8
7
+ Description-Content-Type: text/markdown
8
+ License-File: LICENSE
9
+ Requires-Dist: pandas >=1.0
10
+ Requires-Dist: packaging >=20
11
+ Requires-Dist: psutil >=5.8
12
+ Requires-Dist: pytz
13
+ Requires-Dist: tabulate
14
+ Requires-Dist: pandas-market-calendars
15
+ Requires-Dist: importlib-resources >=5 ; python_version < "3.9"
16
+ Provides-Extra: dev
17
+ Requires-Dist: build >=1.0 ; extra == 'dev'
18
+ Requires-Dist: twine >=5.0 ; extra == 'dev'
19
+ Provides-Extra: zmq
20
+ Requires-Dist: pyzmq >=25 ; extra == 'zmq'
21
+
22
+ # cfquant
23
+
24
+ <p>
25
+ <a href="https://github.com/95ge/cfquant/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/95ge/cfquant?style=flat&logo=github&label=Stars" height="18" /></a>
26
+ <a href="https://github.com/95ge/cfquant/network/members"><img alt="GitHub forks" src="https://img.shields.io/github/forks/95ge/cfquant?style=flat&logo=github&label=Forks" /></a>
27
+ <a href="https://github.com/95ge/cfquant/issues"><img alt="GitHub issues" src="https://img.shields.io/github/issues/95ge/cfquant?style=flat&logo=github&label=Issues" /></a>
28
+ <a href="https://github.com/95ge/cfquant/commits/main"><img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/95ge/cfquant?style=flat&logo=git&label=Last%20commit" /></a>
29
+ <a href="LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg?style=flat" /></a>
30
+ <img alt="Python 3.8 to 3.12" src="https://img.shields.io/badge/Python-3.8--3.12-blue?style=flat&logo=python&logoColor=white" />
31
+ </p>
32
+
33
+ #### 1、cfquant 是将大QMT转为类miniqmt来使用。它让外部 Python 程序和 Web 控制台可以使用大 QMT 的行情、查询、交易和回调能力,并尽量保持接近 `xtquant` 的调用方式。
34
+
35
+ #### 2、支持交易委托,交易回调,全推行情推送,行情查询,数据下载等功能。
36
+
37
+ #### 3、高兼容miniqmt,几乎不用改您原来的miniqmt策略,还是一样的使用。
38
+
39
+ #### 3、总之,您可以在部署项目后在您的程序中无感使用miniqmt。
40
+
41
+ #### 4、部署稍微比较复杂,请您耐心~~~,欢迎提功能与需求,让miniqmt再一次伟大!
42
+
43
+ #### 5、官网与反馈:[www.cfquant.org](https://cfquant.org)
44
+
45
+ ## 快速开始
46
+
47
+ ### 环境要求
48
+
49
+ - Windows
50
+ - 已安装并登录大 QMT
51
+ - Python `3.8` - `3.12`,生产环境优先使用 `3.10` 或 `3.12`
52
+
53
+ ### 启动步骤
54
+
55
+ 1. 将项目解压到固定目录,例如 `D:\cfquant`。
56
+ 2. 在项目目录安装依赖:
57
+
58
+ ```powershell
59
+ cd D:\cfquant
60
+ pip install -r requirements.txt
61
+ ```
62
+
63
+ 3. 运行 `启动cfquant.bat`。
64
+ 4. 打开 <http://127.0.0.1:8765/>,按网页中的“新手初始化向导”完成账号、模式和 QMT 目录配置。
65
+ 5. 在 QMT 中加载对应的入口脚本,回到网页验证资金、持仓、委托和行情。
66
+
67
+ 新用户建议先使用**通用模式**。一个 QMT 加载一个入口脚本即可完成大多数部署。
68
+
69
+ ## 模式选择
70
+
71
+ | 模式 | QMT 入口 | 适用场景 |
72
+ |---|---|---|
73
+ | 通用模式 | `CFQUANT_CTYPE_ALL_LOWLAT.py` | 默认选择,适合大多数用户和单账号部署 |
74
+ | 极致模式 | `CFQUANT_LITE.py` | QMT 有白名单限制、无法导入 `cfquant` 包时使用 |
75
+ | 高级模式 | 普通 QMT 加载 `CFQUANT.py`,极速交易端加载 `CFQUANT_TRADE_LOWLAT.py` | 需要进一步降低下单、撤单延迟时使用 |
76
+
77
+ 高级模式需要同时打开两个 QMT,不能在同一个 QMT 中同时加载两个入口。
78
+
79
+ ## Python 接入
80
+
81
+ 从 PyPI 安装:
82
+
83
+ ```powershell
84
+ pip install cfquant
85
+ ```
86
+
87
+ 示例:
88
+
89
+ ```python
90
+ from cfquant import xtdata
91
+
92
+ tick = xtdata.get_full_tick(["000001.SZ"])
93
+ print(tick)
94
+ ```
95
+
96
+ `cfquant` 默认使用 `transport=auto`,通常不需要手动配置通信通道。完整导入方式、路由规则和特殊部署方式见[外部 Python 接入](docs/外部Python接入.md)。
97
+
98
+ ## Web 控制台
99
+
100
+ Web 控制台提供账号绑定、资金持仓、委托成交、下单撤单、行情订阅、接口调试、部署教程和更新管理。
101
+
102
+ 常用脚本:
103
+
104
+ ```text
105
+ 启动cfquant.bat 启动
106
+ 停止cfquant.bat 停止
107
+ 重启cfquant.bat 重启
108
+ ```
109
+
110
+ ## 文档
111
+
112
+ | 需求 | 文档 |
113
+ |---|---|
114
+ | 通用模式部署 | [通用模式部署指南](docs/通用模式部署指南.md) |
115
+ | 极致模式部署 | [极致模式部署指南](docs/极致模式部署指南.md) |
116
+ | 高级模式部署 | [高级模式部署指南](docs/高级模式部署指南.md) |
117
+ | 账号和 QMT 目录配置 | [Web 账号运行配置说明](docs/Web账号运行配置说明.md) |
118
+ | 从 miniQMT 迁移 | [miniQMT 迁移到大 QMT 指南](docs/miniQMT迁移到大QMT指南.md) |
119
+ | `xtdata` 兼容性 | [xtdata 平替追踪](docs/xtdata平替追踪.md) |
120
+ | `xttrader` 兼容性 | [xttrader 平替追踪](docs/xttrader平替追踪.md) |
121
+ | 接口能力范围 | [QMT 函数封装能力清单](docs/QMT函数封装能力清单.md) |
122
+ | 日志、更新和回滚 | [运维与更新](docs/运维与更新.md) |
123
+ | 版本变化 | [版本日志](docs/版本日志.md) |
124
+
125
+ 更详细的图文教程也可以直接在 Web 控制台的“教程”页面查看。
126
+
127
+ ## Star History
128
+
129
+ <a href="https://star-history.com/#95ge/cfquant&Date"><img src="https://api.star-history.com/svg?repos=95ge%2Fcfquant&type=Date" alt="Star History Chart" width="500" /></a>
130
+
131
+
132
+
133
+ ## 项目交流群
134
+ <img src="ba67bb2fcfa8a067d2c8249656248449.jpg" alt="cfquant 项目交流群二维码" width="280" />
135
+
136
+
137
+ ## 联系作者
138
+ - #### 地球号:shcfquant,请注明来意
139
+ - #### 邮箱:litaoflyme@163.com
140
+
141
+
142
+ ## 许可证
143
+
144
+ 本项目采用 [MIT License](LICENSE) 开源。
@@ -0,0 +1,90 @@
1
+ cfquant_pipe_hub.py,sha256=yzeAO1HNZwBj5fS6fedK55LvTqotCR7nMVy4eAKd6rY,1591
2
+ cfquant_web_server.py,sha256=dh6VVy9yRCV_dYH58sPmPQXhs-YdwuYZbFEjHNujL7c,517366
3
+ LTtx/__init__.py,sha256=t2x8eVcFu7nk0Sakws_0Th7Cs6iUDJjT6s6_X_rAwDQ,101
4
+ LTtx/tx/Config.txt,sha256=ARD1L2rNZTZbllogliQRHc9jys528_g1-3rI9cZUoHI,376
5
+ LTtx/tx/LTtx_server.py,sha256=vgbDgvzcQ8ODIhL74_7_zZ-9A8YnTiVlgE1Ef6NwHp4,40515
6
+ LTtx/tx/__init__.py,sha256=pIY4e75Y7jFpdvCYGxXivINuZ5--trz28cwGDC9IS20,45
7
+ LTtx/tx/tx.py,sha256=Z-wJBVsxtXg4x91mgq7IZP9m4R6xReShqKAWC4wNiok,73200
8
+ cfquant/__init__.py,sha256=fn6CKa3BgdTbj6WbU5eGvUcONMER9MpRz1c49pXoSvQ,639
9
+ cfquant/account_routing.py,sha256=1LcHH850ZKLeqmlUIyEmyMpKyHyZCX85frLYdhCIFis,4709
10
+ cfquant/channels.py,sha256=NjJK3CBwfMcNTSqplvVh0AuLZ0abWmmsXZ4m5wEkZis,2629
11
+ cfquant/cli.py,sha256=20fHwYbQWv78hRtznHeYtevG4lAtJYQbtHtWi8EqvM8,9528
12
+ cfquant/client.py,sha256=JGza0GOFRk1oAkNIfQgqX0wuODDPKxVUlC8-zU9x32M,11976
13
+ cfquant/config.py,sha256=Pkoug1YqMFJWUY-62bB66x0V7TGMnEeL-za0VFxkznM,3299
14
+ cfquant/hub.py,sha256=DmdVirJPAOLhrLm-_ERE9tP2oEac0Kchiagd-fbRumg,11235
15
+ cfquant/logging_i18n.py,sha256=czUI0_SvsZwcDEJlFB-VGM6S3FLZcr4kpIJ5JBWNHPc,16313
16
+ cfquant/normal_bridge.py,sha256=yUVFUTUTdcr09WHR57RsX6OGSH_-I4Aj3PN4rbU6UsE,26821
17
+ cfquant/pipe_bridge.py,sha256=uEPnjIVvcUFgFE8qLTU6verq4EIOTNUt5gVBEQT0SRI,7575
18
+ cfquant/pipe_client.py,sha256=ILezR1dtXqEYlhxxkjsaiPG4jcLCbBa82EEwfEGCsjQ,8518
19
+ cfquant/pipe_hub.py,sha256=QF1fXGkljWPvelBXyf_P3Lr2cORsnDV_j-W0GaxqaT4,25303
20
+ cfquant/pipe_transport.py,sha256=TlHMLz7f8GzTFn6IwTSarmiHJYR8Ln2gHesV0BZYIEA,16647
21
+ cfquant/protocol.py,sha256=6-gsaqgTsIpA6Rflnp-0NrymIXCCaqaOJ25DMXPalY4,6777
22
+ cfquant/qmt_bridge.py,sha256=_8PAql-idFBLJJOrGacvTVqx1z7VsiiYiktFI7cbwzc,44561
23
+ cfquant/runtime_report.py,sha256=y11AirgsMZW_I8f1xf_rVicAZaeYUwkPcy9CscEaZuM,12094
24
+ cfquant/tx.py,sha256=NT_As1CVhcZykd6T4V4tLAGcNarz5qV2g6_wt8b_f1o,71634
25
+ cfquant/tx_trade_bridge.py,sha256=VSviGH7TpD1RBWRHCdZiSkrMuaUXgQtnhJDJIwEjbtk,85343
26
+ cfquant/version.py,sha256=rMmx_UA6mc12rNUvL5GGs7Di3ZU-h0j8JZE1vx3htoM,128
27
+ cfquant/xtconstant.py,sha256=FlznouVZ_RhsaU91yEV7pMrhO_zlAMLZU_IWTvJhzsk,7384
28
+ cfquant/xtdata.py,sha256=cmm5VSo67Heyl8-PfzZhigxbPxZuF_400e8BI9lfIj0,14407
29
+ cfquant/xttrader.py,sha256=-9iIx7tevxMyt3CeJWeODo30NxldfPXfU8y0aPWl2t0,36666
30
+ cfquant/xttype.py,sha256=7x-gI7L5nZikZV8bqAOFQm4NKJRA135Gpy2zyKR1hxw,18248
31
+ qmt_scripts/CFQUANT.py,sha256=Hqh0wjme8_ylm9J5Rkvz5SrnNQyoN1oV4fZxAIBJ_kI,17650
32
+ qmt_scripts/CFQUANT_CTYPE_ALL_LOWLAT.py,sha256=0WFdmwzXkbXDQ8FzKd3LFEw6r3PMsc-JapH8JsWwkJo,31565
33
+ qmt_scripts/CFQUANT_LITE.py,sha256=X9Pm_cQlNgRxIVwuiVPcRNT9zmFhSIUwburfr-IsrGY,199986
34
+ qmt_scripts/CFQUANT_TRADE_LOWLAT.py,sha256=cyeGYmcYzCcABmhRm0FGOqi-b4rmFY7BjKRFd2R8GO8,13775
35
+ qmt_scripts/__init__.py,sha256=1fODetCEggZaIbaus0zqvY9ydy56nu-HqSfvFvAPjr0,55
36
+ qmt_scripts/同账号独立市场/CFQUANT_CTYPE_ALL_LOWLAT_SH.py,sha256=nzVz_Hx6SX568cYvZ0JNhpTEaG4MRyuxMDxnFuBS3J4,33149
37
+ qmt_scripts/同账号独立市场/CFQUANT_CTYPE_ALL_LOWLAT_SZ.py,sha256=196TeGeasMlObhqTVwecScokCovGB35sfhQQf_pVQd0,33149
38
+ qmt_scripts/同账号独立市场/CFQUANT_LITE_SH.py,sha256=4McY9o3ItvqWnZW8FfuyksgAT2z3wyErEVf8zKbzOVE,204399
39
+ qmt_scripts/同账号独立市场/CFQUANT_LITE_SZ.py,sha256=HXUWPM5Ii9o4DV3t4lliFWEnxM2mzdP7Bd70_K2fDvE,204399
40
+ qmt_scripts/同账号独立市场/CFQUANT_TRADE_LOWLAT_SH.py,sha256=TQ-ygN6AyN4RxFTGO7XLfvKfoYhCFrlxuBCJaPheEF0,15944
41
+ qmt_scripts/同账号独立市场/CFQUANT_TRADE_LOWLAT_SZ.py,sha256=VJ0LZYj7cJgxT_0xv9qAX0LlpEFRzI6wDa76YNt9pPE,15944
42
+ qmt_scripts/同账号独立市场/readme.md,sha256=5bVTtYki3N77-n7hSsI6aAttuqJZbMwf6pRIH8PHoaA,4051
43
+ web_dashboard/__init__.py,sha256=Qt8vBIpPWlVRZY4FTVABtMTCGIdauur2sWO51z4vV5c,57
44
+ web_dashboard/app.js,sha256=QsYMh1K-Q7Z6pQJ2ek5KpYJHkWExppkdL6gE33WyfkQ,418727
45
+ web_dashboard/favicon.svg,sha256=_z9RxN89PMUSAud_Z74MhzSNa-9IIfoM8OZeaN2z62s,529
46
+ web_dashboard/index.html,sha256=cQeTq8Y893tYQ5YRrrU15yi99b1ny_ds3uupmdHh7wU,129133
47
+ web_dashboard/styles.css,sha256=PrUf1H2z1C6epr9CPrrQkmj0RW6FSVMAtfHcoww8M9A,138129
48
+ web_dashboard/avatars/amber-pulse.svg,sha256=A8dajfMhHmInBYQgwLLYdYUbQVpUzenHEz9amR-sJ3E,855
49
+ web_dashboard/avatars/copper-grid.svg,sha256=EdUyzII06QEQVZDzY7KYoAJ9Kkghou0PHY_2gATQgi4,805
50
+ web_dashboard/avatars/market-blue.svg,sha256=M9KENopAritvoJKgFQ0Z0oMUYd0nF8jE58gyd4TYyqw,779
51
+ web_dashboard/avatars/rose-circuit.svg,sha256=2j1jIpIwTi8u63F8QbEF9ieYI0SSEe41fuForx7jlPY,887
52
+ web_dashboard/avatars/signal-green.svg,sha256=KY5jBC3m5nCV5Hn0xeTRcnfRyd88xaP3y8zVzAVbr48,834
53
+ web_dashboard/avatars/slate-wave.svg,sha256=bFJk5k_Gr42DXqRQles52wMgZZKwbPCCSSfR8Sb1LHE,807
54
+ web_dashboard/avatars/teal-orbit.svg,sha256=u4taR3T42cjRsVm827CZ8y4xKq9FlECa0cFngX_wdWk,879
55
+ web_dashboard/avatars/violet-node.svg,sha256=1N0P9buYupDb0iDQq4WGphASfSu0ZFPsZEHiNlgSR4I,815
56
+ web_dashboard/image/qmt_deploy/image-10.png,sha256=2ecciHr1RNoa7yo060aRMplGFiL5HuraFvTnMd-0PiQ,515065
57
+ web_dashboard/image/qmt_deploy/image-11.png,sha256=t6qqQ832vvn93qVnzzaUdXlxBr-vT5yzRQ6i19OvzVc,434371
58
+ web_dashboard/image/qmt_deploy/image-12.png,sha256=u3RzOTs7w5YZqvkTEufDdzPOVHY3dCqcdOJkVbqd9IM,267638
59
+ web_dashboard/image/qmt_deploy/image-13.png,sha256=CV-t8qM2skxjKwC4Kr_NbcBD-APKW16uLOjZuZygvtM,446187
60
+ web_dashboard/image/qmt_deploy/image-14.png,sha256=L6FnwlzKvj92moR2Iq26JlacLwgRktg2ZUnj9V-AnYE,276052
61
+ web_dashboard/image/qmt_deploy/image-15.png,sha256=L6FnwlzKvj92moR2Iq26JlacLwgRktg2ZUnj9V-AnYE,276052
62
+ web_dashboard/image/qmt_deploy/image-16.png,sha256=yLrUqJNxpyPtMiyc4KGD3bPFWEjxQy0r35tLUWCfmVA,290526
63
+ web_dashboard/image/qmt_deploy/image-17.png,sha256=yxlhXwgBnt5tUkmK5ATJUdD1AG_dshNK7LFmp_icc_k,197373
64
+ web_dashboard/image/qmt_deploy/image-18.png,sha256=ozIYiTAdUe0HoYjqgz4qrNooG8tPjBY3xN5whue7OHc,451314
65
+ web_dashboard/image/qmt_deploy/image-19.png,sha256=pcnRzPQdnPf1qDHXf8f1miNd5JeMYeD2tqFz7QEzLzY,247341
66
+ web_dashboard/image/qmt_deploy/image-20.png,sha256=Vy4xoUaVyy6VMeq-6nKRgdXAQduOlfXFa3-KYFTLn48,83858
67
+ web_dashboard/image/qmt_deploy/image-21.png,sha256=VmsGmmElsKRQbsa1ENYUCQE5lSsmLDc874kZOVr8ZCY,229935
68
+ web_dashboard/image/qmt_deploy/image-4.png,sha256=__jLMWPj2gRgUabM1Z5HTddEh8jFusCD0N0U-sK3_UE,267433
69
+ web_dashboard/image/qmt_deploy/image-5.png,sha256=rF3xE9X04fvoql4Y8mYnul4GLdYejKLreNziWDC0TDg,111745
70
+ web_dashboard/image/qmt_deploy/image-6.png,sha256=dRGrPepPhd7BS-G8DzxYsf4W5pkPsyn-KnWY8UJZzF4,447522
71
+ web_dashboard/image/qmt_deploy/image-7.png,sha256=N_ixzcgv-TVD_wRZiX_PRcKSBJYU4mmn3GqJ2BtuqIg,291555
72
+ web_dashboard/image/qmt_deploy/image-8.png,sha256=fNeaovZZuTze8fq6XhpKGlhSbcRbtP-wqjfTxbZX1OA,119320
73
+ web_dashboard/image/qmt_deploy/image-9.png,sha256=2RjcQs4eSGZVjWPRAzsT9x-CCblGcFDCRAMHPAPPGvw,179592
74
+ web_dashboard/image/通用模式部署指南/image-1.png,sha256=R8Y1VfxN0vHJzkeu0YqIxehc2qvWFqowiUFzZZRks64,214836
75
+ web_dashboard/image/通用模式部署指南/image-2.png,sha256=mQ8kv6E_3Fz5_1fwKREshz97mKgmRBnuEFR-F7aN2a8,56699
76
+ web_dashboard/image/通用模式部署指南/image-3.png,sha256=jxlGS0S1tFIYaPTukiBZLf1INdg9P0cBsZUiw3hBaWE,166306
77
+ web_dashboard/image/通用模式部署指南/image.png,sha256=XvZyCglEBV2Nuiinx8GW4o2PetpteFAcwEA70EChyoo,355851
78
+ web_dashboard/image/部署指南/1783479325179.png,sha256=76HYt5AmzzsejO2xABPooM4a8t-gNngpjwS2EbzS7Jg,103127
79
+ web_dashboard/image/部署指南/1783479745262.png,sha256=Xci4fQvgRyQYeyQiQMQ5-zVHwOxzorKsedSDM9jP9Is,348604
80
+ web_dashboard/image/部署指南/1783480178700.png,sha256=C4J-xD8eInhNijYiWBQXyHCZo5947KOY7xz7T9Fi55Q,179425
81
+ web_dashboard/image/部署指南/1783480428759.png,sha256=jFinWC5-n43szQYHZmhzDqNH0c3eeTlhsFw2bQnN_LQ,242543
82
+ web_dashboard/image/部署指南/1783489807217.png,sha256=-b4xr4ob45aXAUXDJKRO1R4FS0BOgkTuFYTBXalqCK4,218754
83
+ web_dashboard/image/部署指南/1783490503491.png,sha256=K461xslfXVCGmc3cVaMgngX8KpiU5fd-w4UCopSZoG8,364637
84
+ web_dashboard/vendor/mermaid.min.js,sha256=HpzWq72z6pNa82lnwLmXNA95K5sPP2Yl02VjunmRIaU,3337746
85
+ cfquant-0.2.0.dist-info/LICENSE,sha256=qyc4PnAx3WmPGaC0aLajgNXM67K5wklMO7FsslCUDD8,1060
86
+ cfquant-0.2.0.dist-info/METADATA,sha256=XcH8g02cvBkH4zNFmLHsHn145byxF81x6Qrh2bR86u0,5792
87
+ cfquant-0.2.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
88
+ cfquant-0.2.0.dist-info/entry_points.txt,sha256=pP1EZ_qVIPCScF-BWhbGASzRvzLZqg7juWzIUIe8_lI,121
89
+ cfquant-0.2.0.dist-info/top_level.txt,sha256=39chmbgRnj1c6vh7TPRF7EFTPk5j2Erg921TFd4cpW0,75
90
+ cfquant-0.2.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: bdist_wheel (0.43.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,4 @@
1
+ [console_scripts]
2
+ cfquant = cfquant.cli:main
3
+ cfquant-pipe-hub = cfquant_pipe_hub:main
4
+ cfquant-web = cfquant.cli:web_main
@@ -0,0 +1,6 @@
1
+ LTtx
2
+ cfquant
3
+ cfquant_pipe_hub
4
+ cfquant_web_server
5
+ qmt_scripts
6
+ web_dashboard
cfquant_pipe_hub.py ADDED
@@ -0,0 +1,45 @@
1
+ # -*- coding: utf-8 -*-
2
+ import sys
3
+ sys.dont_write_bytecode = True
4
+
5
+ import argparse
6
+ import os
7
+
8
+
9
+ def _path(value):
10
+ value = str(value or "").strip()
11
+ if not value:
12
+ return ""
13
+ return os.path.abspath(os.path.expandvars(os.path.expanduser(value)))
14
+
15
+
16
+ def main(argv=None):
17
+ parser = argparse.ArgumentParser(description="Start cfquant named-pipe hub.")
18
+ parser.add_argument("--pipe-name", default=None, help=r"Pipe name, e.g. \\.\pipe\cfquant_pipe_hub")
19
+ parser.add_argument("--quiet", action="store_true", help="Disable console logs.")
20
+ parser.add_argument("--default-request-channel", default="cfquant.normal.request")
21
+ parser.add_argument("--home", "--state-dir", dest="home", help="Writable cfquant state directory.")
22
+ parser.add_argument("--runtime-dir", help="Override the runtime directory.")
23
+ parser.add_argument("--status-file", help="Override the PipeHub status JSON file.")
24
+ args = parser.parse_args(argv)
25
+ if args.home:
26
+ home = _path(args.home)
27
+ os.environ["CFQUANT_HOME"] = home
28
+ if not args.runtime_dir:
29
+ os.environ["CFQUANT_RUNTIME_DIR"] = os.path.join(home, "runtime")
30
+ if args.runtime_dir:
31
+ os.environ["CFQUANT_RUNTIME_DIR"] = _path(args.runtime_dir)
32
+ if args.status_file:
33
+ os.environ["CFQUANT_PIPE_HUB_STATUS_FILE"] = _path(args.status_file)
34
+
35
+ from cfquant.pipe_hub import run_pipe_hub
36
+
37
+ run_pipe_hub(
38
+ pipe_name=args.pipe_name,
39
+ show=not args.quiet,
40
+ default_request_channel=args.default_request_channel,
41
+ )
42
+
43
+
44
+ if __name__ == "__main__":
45
+ main()