qlib-sync 0.1.0__tar.gz → 0.1.1__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.
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/PKG-INFO +9 -7
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/README.md +8 -6
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/README.zh-CN.md +7 -6
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/mcpb/manifest.json +1 -1
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/mcpb/pyproject.toml +2 -2
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/pyproject.toml +1 -1
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/server.json +18 -4
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/skills/qlib-sync/SKILL.md +1 -1
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/src/qlib_sync/__init__.py +1 -1
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/src/qlib_sync/mcp_server.py +1 -1
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/.gitignore +0 -0
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/LICENSE +0 -0
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/docs/scheduling.md +0 -0
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/mcpb/.mcpbignore +0 -0
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/mcpb/src/server.py +0 -0
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/src/qlib_sync/api.py +0 -0
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/src/qlib_sync/cli.py +0 -0
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/src/qlib_sync/cn/__init__.py +0 -0
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/src/qlib_sync/cn/market.py +0 -0
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/src/qlib_sync/cn/update.py +0 -0
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/src/qlib_sync/txn.py +0 -0
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/tests/test_api.py +0 -0
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/tests/test_cli.py +0 -0
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/tests/test_cn_market.py +0 -0
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/tests/test_mcp_server.py +0 -0
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/tests/test_release_metadata.py +0 -0
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/tests/test_txn.py +0 -0
- {qlib_sync-0.1.0 → qlib_sync-0.1.1}/tools/demo/README.md +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: qlib-sync
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1
|
|
4
4
|
Summary: Safely install and update a local Qlib China A-share dataset, with an MCP server for AI assistants.
|
|
5
5
|
Project-URL: Homepage, https://github.com/randyy179/qlib-sync
|
|
6
6
|
Project-URL: Issues, https://github.com/randyy179/qlib-sync/issues
|
|
@@ -46,7 +46,9 @@ pip install qlib-sync
|
|
|
46
46
|
qlib-sync cn update
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
-
Or without installing anything first: `uvx qlib-sync cn update`.
|
|
49
|
+
Or without installing anything first: `uvx --python 3.12 qlib-sync cn update`.
|
|
50
|
+
(`--python 3.12` because pyqlib publishes wheels up to Python 3.12; uv fetches that Python
|
|
51
|
+
for you if needed. With pip, use Python 3.10 to 3.12.)
|
|
50
52
|
|
|
51
53
|

|
|
52
54
|
|
|
@@ -150,17 +152,17 @@ Every client needs the same two things: the command `uvx` and the arguments `qli
|
|
|
150
152
|
| Client | How to add qlib-sync |
|
|
151
153
|
|---|---|
|
|
152
154
|
| Claude Desktop | Download `qlib-sync.mcpb` from the [latest release](https://github.com/randyy179/qlib-sync/releases/latest) and open it |
|
|
153
|
-
| Claude Code | `claude mcp add qlib-sync -- uvx qlib-sync mcp` |
|
|
154
|
-
| OpenAI Codex CLI | `codex mcp add qlib-sync -- uvx qlib-sync mcp` |
|
|
155
|
+
| Claude Code | `claude mcp add qlib-sync -- uvx --python 3.12 qlib-sync mcp` |
|
|
156
|
+
| OpenAI Codex CLI | `codex mcp add qlib-sync -- uvx --python 3.12 qlib-sync mcp` |
|
|
155
157
|
| Cursor | The JSON below, in `~/.cursor/mcp.json` |
|
|
156
158
|
| Gemini CLI | The JSON below, in `~/.gemini/settings.json` |
|
|
157
159
|
| Qwen Code | The JSON below, in `~/.qwen/settings.json` |
|
|
158
160
|
| Tencent CodeBuddy, ByteDance Trae, Alibaba Tongyi Lingma | MCP settings, add a server manually, paste the JSON below |
|
|
159
|
-
| Cherry Studio | Settings, MCP servers, add: type STDIO, command `uvx`, arguments `qlib-sync
|
|
160
|
-
| VS Code (Copilot agent mode) | `.vscode/mcp.json`: `{ "servers": { "qlib-sync": { "type": "stdio", "command": "uvx", "args": ["qlib-sync", "mcp"] } } }` |
|
|
161
|
+
| Cherry Studio | Settings, MCP servers, add: type STDIO, command `uvx`, arguments `--python`, `3.12`, `qlib-sync`, `mcp` on separate lines |
|
|
162
|
+
| VS Code (Copilot agent mode) | `.vscode/mcp.json`: `{ "servers": { "qlib-sync": { "type": "stdio", "command": "uvx", "args": ["--python", "3.12", "qlib-sync", "mcp"] } } }` |
|
|
161
163
|
|
|
162
164
|
```json
|
|
163
|
-
{ "mcpServers": { "qlib-sync": { "command": "uvx", "args": ["qlib-sync", "mcp"] } } }
|
|
165
|
+
{ "mcpServers": { "qlib-sync": { "command": "uvx", "args": ["--python", "3.12", "qlib-sync", "mcp"] } } }
|
|
164
166
|
```
|
|
165
167
|
|
|
166
168
|
Menu names and file locations change between versions; check your client's MCP documentation
|
|
@@ -17,7 +17,9 @@ pip install qlib-sync
|
|
|
17
17
|
qlib-sync cn update
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
Or without installing anything first: `uvx qlib-sync cn update`.
|
|
20
|
+
Or without installing anything first: `uvx --python 3.12 qlib-sync cn update`.
|
|
21
|
+
(`--python 3.12` because pyqlib publishes wheels up to Python 3.12; uv fetches that Python
|
|
22
|
+
for you if needed. With pip, use Python 3.10 to 3.12.)
|
|
21
23
|
|
|
22
24
|

|
|
23
25
|
|
|
@@ -121,17 +123,17 @@ Every client needs the same two things: the command `uvx` and the arguments `qli
|
|
|
121
123
|
| Client | How to add qlib-sync |
|
|
122
124
|
|---|---|
|
|
123
125
|
| Claude Desktop | Download `qlib-sync.mcpb` from the [latest release](https://github.com/randyy179/qlib-sync/releases/latest) and open it |
|
|
124
|
-
| Claude Code | `claude mcp add qlib-sync -- uvx qlib-sync mcp` |
|
|
125
|
-
| OpenAI Codex CLI | `codex mcp add qlib-sync -- uvx qlib-sync mcp` |
|
|
126
|
+
| Claude Code | `claude mcp add qlib-sync -- uvx --python 3.12 qlib-sync mcp` |
|
|
127
|
+
| OpenAI Codex CLI | `codex mcp add qlib-sync -- uvx --python 3.12 qlib-sync mcp` |
|
|
126
128
|
| Cursor | The JSON below, in `~/.cursor/mcp.json` |
|
|
127
129
|
| Gemini CLI | The JSON below, in `~/.gemini/settings.json` |
|
|
128
130
|
| Qwen Code | The JSON below, in `~/.qwen/settings.json` |
|
|
129
131
|
| Tencent CodeBuddy, ByteDance Trae, Alibaba Tongyi Lingma | MCP settings, add a server manually, paste the JSON below |
|
|
130
|
-
| Cherry Studio | Settings, MCP servers, add: type STDIO, command `uvx`, arguments `qlib-sync
|
|
131
|
-
| VS Code (Copilot agent mode) | `.vscode/mcp.json`: `{ "servers": { "qlib-sync": { "type": "stdio", "command": "uvx", "args": ["qlib-sync", "mcp"] } } }` |
|
|
132
|
+
| Cherry Studio | Settings, MCP servers, add: type STDIO, command `uvx`, arguments `--python`, `3.12`, `qlib-sync`, `mcp` on separate lines |
|
|
133
|
+
| VS Code (Copilot agent mode) | `.vscode/mcp.json`: `{ "servers": { "qlib-sync": { "type": "stdio", "command": "uvx", "args": ["--python", "3.12", "qlib-sync", "mcp"] } } }` |
|
|
132
134
|
|
|
133
135
|
```json
|
|
134
|
-
{ "mcpServers": { "qlib-sync": { "command": "uvx", "args": ["qlib-sync", "mcp"] } } }
|
|
136
|
+
{ "mcpServers": { "qlib-sync": { "command": "uvx", "args": ["--python", "3.12", "qlib-sync", "mcp"] } } }
|
|
135
137
|
```
|
|
136
138
|
|
|
137
139
|
Menu names and file locations change between versions; check your client's MCP documentation
|
|
@@ -11,7 +11,8 @@ pip install qlib-sync
|
|
|
11
11
|
qlib-sync cn update
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
-
也可以不预先安装,直接运行:`uvx qlib-sync cn update`。
|
|
14
|
+
也可以不预先安装,直接运行:`uvx --python 3.12 qlib-sync cn update`。
|
|
15
|
+
(加 `--python 3.12` 是因为 pyqlib 只提供到 Python 3.12 的安装包,需要时 uv 会自动下载这个版本的 Python。用 pip 安装时请使用 Python 3.10 到 3.12。)
|
|
15
16
|
|
|
16
17
|

|
|
17
18
|
|
|
@@ -99,17 +100,17 @@ MCP server 在你本机运行,读取你电脑上的数据,不需要搭建任
|
|
|
99
100
|
| 工具 | 接入方式 |
|
|
100
101
|
|---|---|
|
|
101
102
|
| Claude Desktop | 从[最新发布](https://github.com/randyy179/qlib-sync/releases/latest)下载 `qlib-sync.mcpb`,双击安装 |
|
|
102
|
-
| Claude Code | `claude mcp add qlib-sync -- uvx qlib-sync mcp` |
|
|
103
|
-
| OpenAI Codex CLI | `codex mcp add qlib-sync -- uvx qlib-sync mcp` |
|
|
103
|
+
| Claude Code | `claude mcp add qlib-sync -- uvx --python 3.12 qlib-sync mcp` |
|
|
104
|
+
| OpenAI Codex CLI | `codex mcp add qlib-sync -- uvx --python 3.12 qlib-sync mcp` |
|
|
104
105
|
| 腾讯 CodeBuddy、字节 Trae、阿里通义灵码 | 在 MCP 设置里手动添加服务器,粘贴下面的 JSON |
|
|
105
|
-
| Cherry Studio | 设置 → MCP 服务器 → 添加:类型选 STDIO,命令填 `uvx
|
|
106
|
+
| Cherry Studio | 设置 → MCP 服务器 → 添加:类型选 STDIO,命令填 `uvx`,参数分四行填 `--python`、`3.12`、`qlib-sync`、`mcp` |
|
|
106
107
|
| 通义千问 Qwen Code | 把下面的 JSON 写进 `~/.qwen/settings.json` |
|
|
107
108
|
| Cursor | 把下面的 JSON 写进 `~/.cursor/mcp.json` |
|
|
108
109
|
| Gemini CLI | 把下面的 JSON 写进 `~/.gemini/settings.json` |
|
|
109
|
-
| VS Code(Copilot Agent 模式) | `.vscode/mcp.json`:`{ "servers": { "qlib-sync": { "type": "stdio", "command": "uvx", "args": ["qlib-sync", "mcp"] } } }` |
|
|
110
|
+
| VS Code(Copilot Agent 模式) | `.vscode/mcp.json`:`{ "servers": { "qlib-sync": { "type": "stdio", "command": "uvx", "args": ["--python", "3.12", "qlib-sync", "mcp"] } } }` |
|
|
110
111
|
|
|
111
112
|
```json
|
|
112
|
-
{ "mcpServers": { "qlib-sync": { "command": "uvx", "args": ["qlib-sync", "mcp"] } } }
|
|
113
|
+
{ "mcpServers": { "qlib-sync": { "command": "uvx", "args": ["--python", "3.12", "qlib-sync", "mcp"] } } }
|
|
113
114
|
```
|
|
114
115
|
|
|
115
116
|
各工具的菜单名称和配置文件位置会随版本变化,找不到时以该工具的 MCP 官方文档为准。已实测:Claude Code、OpenAI Codex CLI。
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"manifest_version": "0.4",
|
|
3
3
|
"name": "qlib-sync",
|
|
4
4
|
"display_name": "qlib-sync: China A-share data",
|
|
5
|
-
"version": "0.1.
|
|
5
|
+
"version": "0.1.1",
|
|
6
6
|
"description": "Install, update, and read a local Qlib China A-share daily dataset.",
|
|
7
7
|
"long_description": "Keeps ~/.qlib/qlib_data/cn_data current with the daily community release from chenditc/investment_data, with checksum verification and automatic rollback, and lets Claude read daily prices and index constituents from it. The first update downloads about 550 MB.",
|
|
8
8
|
"author": {
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "qlib-sync"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.1"
|
|
8
8
|
description = "Safely install and update a local Qlib China A-share dataset, with an MCP server for AI assistants."
|
|
9
9
|
dynamic = ["readme"]
|
|
10
10
|
requires-python = ">=3.10,<3.13"
|
|
@@ -7,15 +7,22 @@
|
|
|
7
7
|
"url": "https://github.com/randyy179/qlib-sync",
|
|
8
8
|
"source": "github"
|
|
9
9
|
},
|
|
10
|
-
"version": "0.1.
|
|
10
|
+
"version": "0.1.1",
|
|
11
11
|
"packages": [
|
|
12
12
|
{
|
|
13
13
|
"registryType": "pypi",
|
|
14
14
|
"identifier": "qlib-sync",
|
|
15
|
-
"version": "0.1.
|
|
15
|
+
"version": "0.1.1",
|
|
16
16
|
"runtimeHint": "uvx",
|
|
17
|
-
"packageArguments": [
|
|
18
|
-
|
|
17
|
+
"packageArguments": [
|
|
18
|
+
{
|
|
19
|
+
"type": "positional",
|
|
20
|
+
"value": "mcp"
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"transport": {
|
|
24
|
+
"type": "stdio"
|
|
25
|
+
},
|
|
19
26
|
"environmentVariables": [
|
|
20
27
|
{
|
|
21
28
|
"name": "QLIB_SYNC_DATA_DIR",
|
|
@@ -27,6 +34,13 @@
|
|
|
27
34
|
"description": "Optional prefix-style GitHub proxy for slow connections, e.g. https://ghfast.top",
|
|
28
35
|
"isRequired": false
|
|
29
36
|
}
|
|
37
|
+
],
|
|
38
|
+
"runtimeArguments": [
|
|
39
|
+
{
|
|
40
|
+
"type": "named",
|
|
41
|
+
"name": "--python",
|
|
42
|
+
"value": "3.12"
|
|
43
|
+
}
|
|
30
44
|
]
|
|
31
45
|
}
|
|
32
46
|
]
|
|
@@ -14,7 +14,7 @@ so running an update is always safe.
|
|
|
14
14
|
## Pick the interface
|
|
15
15
|
|
|
16
16
|
- **MCP tools available** (`cn_status`, `cn_update`, `cn_get_prices`, ...): use them directly.
|
|
17
|
-
- **Otherwise** use the CLI. If `qlib-sync` is not installed, `uvx qlib-sync ...` runs it
|
|
17
|
+
- **Otherwise** use the CLI. If `qlib-sync` is not installed, `uvx --python 3.12 qlib-sync ...` runs it
|
|
18
18
|
without installing; `pip install qlib-sync` installs it. Confirm before installing anything.
|
|
19
19
|
|
|
20
20
|
## Update the data
|
|
@@ -8,6 +8,6 @@ os.environ.setdefault("MLFLOW_DISABLE_AGENT_HINT", "1")
|
|
|
8
8
|
from .api import health_check_cn, status_cn, update_cn
|
|
9
9
|
from .cn.update import UpdateError, UpdateResult
|
|
10
10
|
|
|
11
|
-
__version__ = "0.1.
|
|
11
|
+
__version__ = "0.1.1"
|
|
12
12
|
|
|
13
13
|
__all__ = ["UpdateError", "UpdateResult", "health_check_cn", "status_cn", "update_cn", "__version__"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""MCP server: let AI assistants check, update, and read the local A-share dataset.
|
|
2
2
|
|
|
3
|
-
Run with `qlib-sync mcp` (stdio), or without installing: `uvx qlib-sync mcp`.
|
|
3
|
+
Run with `qlib-sync mcp` (stdio), or without installing: `uvx --python 3.12 qlib-sync mcp`.
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
6
|
from __future__ import annotations
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|