Files
easy-tdx/CLAUDE.md
T
GitHubandClaude Opus 4.7 50491f9aae feat!: rename project from xmtdx to easy-tdx
- Package directory: src/xmtdx/ -> src/easy_tdx/
- Import path: from easy_tdx import ...
- pip install easy-tdx
- Add LICENSE (MIT) with upstream attribution (pytdx, xmtdx)
- Add NOTICE with detailed attribution
- Update all examples, tests, scripts, docs
- Bump version to 1.0.0

BREAKING CHANGE: import path changed from `xmtdx` to `easy_tdx`

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-21 23:21:21 +08:00

55 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Build / Test / Lint
```bash
# 单元测试(无需网络,使用 tests/fixtures/ 中的 hex 数据)
python -m pytest tests/unit/ -v
# 集成测试(需要网络,默认跳过)
XMTDX_LIVE=1 python -m pytest tests/integration/ -v
# 类型检查(strict mypy
mypy src/
# lint + format
ruff check src/ tests/
ruff format --check src/ tests/
```
## 架构
```
src/easy_tdx/
├── client.py # TdxClient / AsyncTdxClient(高层 API
├── transport/
│ ├── sync.py # TdxConnectionsocket+ ping_host / ping_all
│ └── async_.py # AsyncTdxConnectionasyncio
├── commands/ # 每条命令:build_request() + parse_response(),无 IO
├── codec/ # price / volume / datetime / frame 编解码
└── models/ # 纯 dataclass,无业务逻辑
```
commands 层不依赖 transport,可独立单测。修改 codec 或 commands 时不需要网络。
## 协议编解码注意事项
- **价格编码**:变长有符号整数(类 LEB128),bit8=继续,bit7=符号。差分编码(相邻 tick 存 delta)。
- **成交量编码**:4 字节自定义浮点(`_decode_volume`),字节 3=指数,字节 0-2=精度。**不可用于价格字段**。
- **握手**:连接后必须顺序发送 3 条 setup 命令,响应丢弃。
- **帧格式**:16 字节响应头,body 按需 zlib 解压。
- 新增编解码逻辑时务必在 `tests/fixtures/` 中补充 hex fixture 并编写对应的离线解析测试。
## 已知限制
- `Market.BJ``get_security_list()` 不能稳定获取(服务器端问题),不要尝试依赖它。
- `limit_up` / `limit_down``SecurityQuote` 中默认为 `None`,涨跌停价应通过 `get_price_limits()``compute_price_limits()` 计算。
## 代码风格
- ruff: line-length 100, target py310, rules: E/F/I/UP
- mypy strict mode
- 纯标准库,零运行时依赖。新增代码不要引入第三方库。