用途:把项目从 mypy 迁移到 Astral 的 ty 类型检查器。触发条件:.pre-commit-config.yaml 中包含 mirrors-mypy,或 pyproject.toml 中存在 [tool.mypy] 段。
主要能力:将 mirrors-mypy 的 pre-commit 钩子替换为 repo: local 钩子,entry 为 uvx ty check,language 为 system,types 为 [python],pass_filenames 为 false;将 [tool.mypy] 配置迁移为 pyproject.toml 中的 [tool.ty](键名由下划线改为 kebab-case,如 warn_return_any→warn-return-any、disallow_untyped_defs→disallow-untyped-defs,python_version→python-version,strict 与 exclude 同名,ignore_missing_imports 不再需要);删除 mypy.ini;从 dev/lint 依赖中移除 mypy(uv 环境用 uvx --from uv uv remove --dev mypy);最后运行 pre-commit run ty --all-files 验证。
使用方式:命令 /migration-patterns:mypy-to-ty,可加 --check-only 仅报告不修改,或 --fix 自动应用迁移。也可手动执行各步骤,并以 uvx ty check . 直接测试 ty。
适用场景:希望获得更快类型检查(ty 用 Rust 编写)、项目已使用 uv 与 Astral 工具链、希望统一到 ty 配置的代码库。
限制与保留意见:ty 尚不支持某些 mypy 插件、CI 依赖 mypy 特定退出码或插件、项目使用 mypy 守护进程(dmypy)或团队偏好 mypy 错误消息格式时,应继续使用 mypy。[[tool.mypy.overrides]] 的按模块配置需丢弃或手动转换;astral-sh/ty-pre-commit 尚未作为托管仓库存在,因此必须使用 repo: local 模式。缺失事实:ty 的具体性能数据与官方支持范围暂未提供。