Skip to content

release(v0.15.1): 上限 typer<0.26(修复 vendored click 致 CLI 崩溃)#1

Merged
ty19880929 merged 2 commits into
mainfrom
release/v0.15.1
May 27, 2026
Merged

release(v0.15.1): 上限 typer<0.26(修复 vendored click 致 CLI 崩溃)#1
ty19880929 merged 2 commits into
mainfrom
release/v0.15.1

Conversation

@ty19880929
Copy link
Copy Markdown
Owner

问题

deeptrade 任意命令启动即崩(用户实测 plugin upgrade):

RuntimeError: Type not yet supported: <class 'click.core.Context'>

根因:Typer 0.26.0 把 click 硬 fork 成自带的 vendored 副本(typer/_click/),并从依赖里删掉了对独立 click 的声明。本仓库的 CLI 设计同时用了两边——cli.py::_DeepTradeGroup 继承 typer.core.TyperGroup(>=0.26 走 vendored click),而 db_cmd(ctx: click.Context) / 插件 pass-through 的裸 @click.command / @click.pass_context 用的是独立 click。两个 click 是两个不同的类;Typer 构建命令树时用 lenient_issubclass(param.annotation, typer._click.Context) 识别 context 形参,独立的 click.core.Context 识别不出来 → 当成普通 CLI 参数 → 报错。这会让整棵命令树构建失败。

dev/CI 没暴露是因为 uv.lock 锁定 typer 0.25.0(最后一个未 vendor、仍 click>=8.2.1 的版本);只有 pipx install 这类按 typer>=0.12 重新解析的环境会拉到 0.26.2。

改动

  • pyproject.tomltyper>=0.12typer>=0.12,<0.26,恢复"Typer 与仓库共用同一个 click"的不变量(同时堵住插件分发返回独立-click 命令的潜伏 bug)。
  • 版本三处同步 bump 到 0.15.1pyproject.toml / deeptrade/__init__.py / README 徽章(v0.15.0 漏更,仍停在 0.14.0)。
  • CHANGELOG.md 新增 [v0.15.1] 条目(含 pipx runpip deeptrade-quant install "typer<0.26" 临时自救)。
  • uv.lock 重新锁定。

验证

本地 release gate 全绿:ruff check ✓ / mypy deeptrade ✓ / pytest -m "not manual"(623 passed)✓ / python -m build(产出正确命名的 0.15.1 wheel + sdist)✓。

🤖 Generated with Claude Code

ty19880929 and others added 2 commits May 27, 2026 09:39
Typer 0.26.0 把 click 硬 fork 成 vendored 副本(typer/_click/)并删掉对
独立 click 的依赖。本仓库 _DeepTradeGroup 继承 typer.core.TyperGroup,同时
db_cmd / 插件 pass-through 又直接用独立 click(click.Context / @click.command /
@click.pass_context)。两个 click 是不同的类,Typer 构建命令树时识别不出
独立的 click.core.Context context 形参,报 "Type not yet supported:
<class click.core.Context>",导致任意子命令启动即崩(用户实测 plugin upgrade)。

dev/CI 未暴露是因为 uv.lock 锁定 typer 0.25.0;只有 pipx 等按 typer>=0.12
重新解析的环境会拉到 0.26.2。

收紧约束为 typer>=0.12,<0.26,恢复 Typer 与仓库共用同一个 click 的不变量。

顺带修复 README 版本徽章(v0.15.0 漏更,仍停在 0.14.0),test_version_consistency
现已对齐 0.15.1。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
v0.15.1 发布时踩到:tests/test_version_consistency.py 还校验 README 徽章,
但 CLAUDE.md 只写了 pyproject + __init__.py 两处,导致 v0.15.0 把徽章漏在
0.14.0、本次 pytest 才暴露。补全为三处并更新 grep 命令与发布步骤。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@ty19880929 ty19880929 merged commit 570dbee into main May 27, 2026
@ty19880929 ty19880929 deleted the release/v0.15.1 branch May 27, 2026 13:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant