ty - 高速 Python 型チェッカー チートシート
tyはAstral (Ruff と uv の背後にあるチーム) が開発した超高速Python 型チェッカーと言語サーバーで、Rust で書かれている。それは型チェックに同じパフォーマンス哲学を適用する:mypy は大規模なコードベースで数分かかることがあるが、ty はほぼ瞬時のフィードバックを目指しており、型チェックを CI でのみではなく、すべての保存で実行可能にする。これは現代的な Astral Python ツールチェーン — パッケージング用 uv、lint/format 用 Ruff、型用 ty — を完成させる。
ty は mypy より新しく、成熟途中。広範な CI ゲートとして設定する前に、コードベースに対して検証する。
インストール
| 方法 | コマンド |
|---|
| uv (推奨) | uv tool install ty |
| uvx (インストール不要) | uvx ty check |
| pip | pip install ty |
| 確認 | ty --version |
コードのチェック
| コマンド | 説明 |
|---|
ty check | 現在のプロジェクトをチェック |
ty check src/ | 特定のパスをチェック |
ty check --watch | ファイル変更時に再チェック |
ty check --output-format concise | コンパクト出力 |
ty check --error-on-warning | 警告をエラーとして扱う |
ty --help | 完全なオプション一覧 |
設定
ty は pyproject.toml を読む:
[tool.ty]
# チェックするパス
src = ["src", "tests"]
[tool.ty.environment]
python-version = "3.12"
# 依存関係を見つける場所
python = ".venv"
[tool.ty.rules]
# 個々の診断をチューン
possibly-unbound-attribute = "warn"
unused-ignore-comment = "ignore"
| セクション | 目的 |
|---|
[tool.ty] | プロジェクト レイアウト / 含まれるパス |
[tool.ty.environment] | Python バージョン、venv、検索パス |
[tool.ty.rules] | 各ルールをerror、warn、またはignoreに設定 |
診断の抑制
| 形式 | 効果 |
|---|
# ty: ignore | 行のすべての診断を抑制 |
# ty: ignore[rule-name] | 特定のルールを抑制 |
# type: ignore | 同じく尊重 (mypy互換) |
言語サーバー (エディター統合)
| エディター | 方法 |
|---|
| VS Code | Astral ty 拡張をインストール |
| Neovim | ty server を LSP として設定 |
| 任意 LSP クライアント | ty server を実行 |
言語サーバーは、CLI と同じ速度でインライン型エラー、ホバー型、定義へのジャンプを提供する。
一般的な診断
| 診断 | 意味 |
|---|
invalid-argument-type | 引数がパラメーター型に一致しない |
unresolved-attribute | 属性が型に存在しない |
possibly-unbound-variable | 変数が割り当てる前に使用される可能性がある |
invalid-return-type | リターンが注釈と一致しない |
unresolved-import | インポートを解決できない |
Astral ツールチェーン
# 完全な現代的 Python 品質ゲート
uv sync # deps、ロック済みで高速
uv run ruff format . # フォーマット
uv run ruff check . # lint
uv run ty check # 型
uv run pytest # テスト
| ツール | 置き換え |
|---|
| uv | pip、pip-tools、virtualenv、pyenv、poetry |
| Ruff | black、flake8、isort、pyupgrade、+ 他 |
| ty | mypy (型チェック) |
CI 統合
# 型エラーでビルドを失敗させる
uvx ty check --error-on-warning
# 変更されたファイルのみをチェック (git)
git diff --name-only origin/main -- '*.py' | xargs uvx ty check
ty vs その他の型チェッカー
| 側面 | ty | mypy | Pyright |
|---|
| 言語 | Rust | Python | TypeScript/Node |
| 速度 | 非常に高速 | より遅い | 高速 |
| 成熟度 | より新しい | 最も成熟 | 成熟 |
| エディター LSP | 組み込み | プラグイン経由 | 組み込み (Pylance) |
| 最適用途 | 速度 + Astral スタック | エコシステム互換性 | VS Code ユーザー |
リソース