关于 ty-skills
这是一份使用 ty 检查 Python 类型、诊断错误、配置规则及从 mypy 或 pyright 迁移的技能指南,面向 Python 开发者,也涵盖进阶类型模式和编辑器设置。
主要功能
- 01介绍 ty 的安装与检查
- 02配置规则和严重级别
- 03讲解交叉类型及进阶模式
- 04指导从 mypy 或 pyright 迁移
- 05提供编辑器设置参考
适用场景
- 01为 Python 代码添加类型注解
- 02排查并修复 ty 诊断问题
- 03调整类型检查规则
- 04迁移现有 mypy 或 pyright 配置
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jiatastic/ open-python-skills --skill ty-skills安装后在 Claude Code 中输入/ty-skills确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/advanced_patterns.mdcommon_errors.mdmigration_guide.mdty_rules_reference.mdtyping_cheatsheet.mdreferences/editor_setup/cursor.mdneovim.mdvscode.md详细介绍
ty-skills
使用 ty 掌握 Python 类型检查——ty 是由 Astral(uv 和 Ruff 的创建者)用 Rust 编写、速度极快的类型检查器。
何时使用此技能
- 为 Python 代码添加类型注解
- 修复 ty 报告的类型错误和诊断问题
- 配置 ty 规则和严重级别
- 从 mypy 或 pyright 迁移到 ty
- 了解高级类型模式(交集类型、协议、泛型)
- 在编辑器中设置 ty 语言服务器
快速入门
# Install
uv tool install ty
# or: pip install ty
# Check current directory
ty check
# Check specific files
ty check src/
# Full diagnostics
ty check --output-format full
配置
通过 pyproject.toml 配置:
[tool.ty.environment]
python-version = "3.12"
python = "./.venv"
python-platform = "linux"
root = ["./src"]
extra-paths = ["./typings"]
[tool.ty.rules]
# error: fail CI, warn: report, ignore: disable
possibly-unresolved-reference = "error"
invalid-argument-type = "error"
division-by-zero = "warn"
unused-ignore-comment = "warn"
[tool.ty.src]
include = ["src", "tests"]
exclude = ["src/migrations/"]
# Per-file overrides
[[tool.ty.overrides]]
include = ["tests/**"]
[tool.ty.overrides.rules]
possibly-unresolved-reference = "warn"
规则快速参考
| 规则 | 默认级别 | 说明 |
|---|---|---|
possibly-unresolved-reference | error | 变量可能未定义 |
invalid-argument-type | error | 参数类型不匹配 |
incompatible-assignment | error | 赋值的值不兼容 |
missing-argument | error | 缺少必需参数 |
unsupported-operator | error | 类型不支持此运算符 |
invalid-return-type | error | 返回类型不匹配 |
division-by-zero | warn | 可能发生除零 |
unused-ignore-comment | warn | 不需要此抑制注释 |
redundant-cast | warn | 类型转换没有效果 |
possibly-unbound-attribute | warn | 属性可能不存在 |
index-out-of-bounds | warn | 索引可能超出范围 |
交集类型(ty 独有)
ty 原生支持交集类型:
def output_as_json(obj: Serializable) -> str:
if isinstance(obj, Versioned):
reveal_type(obj) # reveals: Serializable & Versioned
return str({
"data": obj.serialize_json(), # From Serializable
"version": obj.version # From Versioned
})
return obj.serialize_json()
抑制注释
# Suppress single rule
x: int = "hello" # type: ignore[incompatible-assignment]
# Suppress multiple
y = risky() # type: ignore[possibly-unresolved-reference, invalid-argument-type]
参考文档
如需详细信息,请参阅:
| 文档 | 内容 |
|---|---|
references/ty_rules_reference.md | 所有规则及其示例和修复方法 |
references/typing_cheatsheet.md | Python typing 模块快速参考 |
references/advanced_patterns.md | 协议、泛型、类型守卫、变异性 |
references/migration_guide.md | 从 mypy/pyright 迁移到 ty |
references/common_errors.md | 常见错误的解决方法及示例 |
references/editor_setup/ | VS Code、Cursor、Neovim 设置 |
资源
评论
支持 Markdown