ys_base
YS 统一 SDK:契约模型(contracts)、auth 客户端与差量同步(auth)、WebSocket RPC 基类(ws)、 本地存储(store,Mongo 主后端、SQLite 迁移期兼容)、子系统服务骨架(server,extra)、 交易网关(trade,extra,P4 收编)。
pip install ys_base # 契约 + auth 客户端 + Mongo/SQLite 存储
pip install ys_base[server] # + FastAPI 子系统骨架
pip install ys_base[trade] # + 交易网关(纯策略系统只装这个)
使用 uv 添加依赖:
uv add ys_base # 契约 + auth 客户端 + Mongo/SQLite 存储
uv add "ys_base[server]" # + FastAPI 子系统骨架
uv add "ys_base[trade]" # + 交易网关(纯策略系统只装这个)
本仓库开发与全量测试需要安装全部 extras:
uv python install 3.13
uv sync --all-extras --frozen
uv run pytest
快速发布到 PyPI
先在 ys_base/__init__.py 中更新 __version__。PyPI 不允许覆盖已经发布的同版本文件,因此每次发布必须使用新版本号。
在 ys_platform 仓库根目录执行,根据终端提示输入账号和密码:
cd ys_base
./publish-pypi.sh
发布成功后可从官方 PyPI 校验版本:
uv cache clean ys-base
uv pip install "ys_base==0.1.11" --default-index https://pypi.org/simple --refresh
上面的 0.1.11 应替换为本次实际发布版本。
trade extra 由 TradeManager 统一装配交易客户端、行情、静态信息和收益数据服务。
每个 Manager 独占一个 TradeRuntime,同一 Manager 下的账号共享 Runtime;ys_base 不保存任何
YsQuote、YsSymbol 或 YsTrade 默认地址和凭据。
from ys_base.trade import (
Account,
TradeManager,
TradeRuntimeConfig,
)
manager = TradeManager(
accounts=[
Account(
account="A001",
password="...",
trade_source="xt",
trade_uri="ws://trade.example.com",
profit_enabled=True,
)
],
runtime_config=TradeRuntimeConfig(
quote_data_base_url="http://quote.example.com",
symbol_data_base_url="http://symbol.example.com",
symbol_data_username="symbol-user",
symbol_data_password="symbol-password",
trade_data_base_url="http://trade-data.example.com",
trade_data_username="trade-user",
trade_data_password="trade-password",
),
)
quotes = await manager.query_snapshots({"600000.SH", "300750.SZ"})
refreshed = await manager.query_snapshots_with_refresh({"600000.SH"}, {"f43", "f58", "f60"})
statics = await manager.query_static_infos({"600000.SH"}, {"name", "pre_close"})
alive = await manager.check_snapshot_service_alive()
DefaultSnapshotFields == "f43,f58,f60",返回原始 f* 字段,并固定映射
f43 -> close、f60 -> pre_close、f58 -> name。不提供 last_price 或 pre_price 兼容字段;
可通过字符串或字段集合指定其他 fields。
query_snapshots()是无缓存单次查询,不登记后台刷新标的。query_snapshots_with_refresh()登记当日标的和字段,并在09:00:00-15:30:00每 2 秒持续刷新; 当日标的和字段只增不减。- Snapshot 和 StaticInfo 缓存在上海自然日变化时会同时清空日期、标的、字段和记录。
- 只有账号明确配置
profit_enabled=True时,才要求 Snapshot、StaticInfo 和 TradeData 三类服务地址齐全。
刚发布的新版本若已在 PyPI 页面可见,但 uv 仍提示该版本不存在,通常是本地缓存的 PyPI Simple Index 元数据尚未更新。先清理单包缓存并从官方源重试: uv cache clean ys-base:优先清理单包缓存。 uv cache clean:单包清理无效时清理完整缓存。 使用 --default-index https://pypi.org/simple 从官方 PyPI 重新安装。 使用 --refresh 强制刷新解析。
uv cache clean ys-base
uv add "ys_base[trade]" --default-index https://pypi.org/simple --refresh
如果仍无法解析,再清理完整缓存:
uv cache clean
uv add "ys_base[trade]" --default-index https://pypi.org/simple --refresh
当前四仓边界、公共包依赖和配置规则见仓库根 docs/架构方案.md。
Metadata
Release files for ys_base 0.1.11
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ys_base-0.1.11.tar.gz | 55.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ys_base-0.1.11-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 122.5 kB
Release files / ys_base-0.1.11.tar.gz
| Download URL | ys_base-0.1.11.tar.gz |
|---|---|
| Size | 55.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f1adaea47728acaaeb1176c4a8899576b288068ea305772d0446e9ff0639926a
|
|
BLAKE2b-256 checksum How to use checksums |
1ab6f95ac5434e2a0881460b6e2d4ba385e7160e8455eaa8d89ca34a6bdb3df7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-requests/2.34.2
|
Release files / ys_base-0.1.11-py3-none-any.whl
| Download URL | ys_base-0.1.11-py3-none-any.whl |
|---|---|
| Size | 66.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b4ae1388d4f53f29834d8068b674f5dff792a351ac1095a5ea15e8f1ce9bb1cf
|
|
BLAKE2b-256 checksum How to use checksums |
fc7a5625aa3638e16dcbc0f54b9b1adf9b71fcd305c817623d90c16cbb1e0594
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-requests/2.34.2
|