ty – Fast Python Type Checker Cheatsheet
ty ist ein extrem schneller Python-Type Checker und Language Server, in Rust von Astral geschrieben (das Team hinter Ruff und uv). Es wendet die gleiche Performance-Philosophie auf Type-Checking an: während mypy Minuten auf einer großen Codebasis dauert, zielt ty auf nahezu sofortiges Feedback ab, was Type-Checking praktisch macht, bei jedem Save zu laufen statt nur im CI. Es vollendet die moderne Astral Python-Toolchain – uv zum Packaging, Ruff zum Lint/Format, ty zum Type-Checking.
ty ist neuer als mypy und reift noch. Validieren Sie es gegen Ihre Codebasis, bevor Sie es zu einem Hard CI Gate machen.
Installation
| Methode | Befehl |
|---|
| uv (empfohlen) | uv tool install ty |
| uvx (keine Installation) | uvx ty check |
| pip | pip install ty |
| Überprüfen | ty --version |
Code überprüfen
| Befehl | Beschreibung |
|---|
ty check | Überprüfen Sie das aktuelle Projekt |
ty check src/ | Überprüfen Sie einen spezifischen Pfad |
ty check --watch | Re-check bei Dateien-Änderungen |
ty check --output-format concise | Kompakte Ausgabe |
ty check --error-on-warning | Behandeln Sie Warnungen als Fehler |
ty --help | Vollständige Optionsliste |
Konfiguration
ty liest pyproject.toml:
[tool.ty]
# Pfade zum Überprüfen
src = ["src", "tests"]
[tool.ty.environment]
python-version = "3.12"
# Wo man Abhängigkeiten findet
python = ".venv"
[tool.ty.rules]
# Tunen Sie einzelne Diagnostik
possibly-unbound-attribute = "warn"
unused-ignore-comment = "ignore"
| Section | Zweck |
|---|
[tool.ty] | Projekt-Layout / eingebundene Pfade |
[tool.ty.environment] | Python-Version, venv, Such-Pfade |
[tool.ty.rules] | Setzen Sie jede Regel auf error, warn, oder ignore |
Diagnostik unterdrücken
| Form | Effekt |
|---|
# ty: ignore | Unterdrücken Sie alle Diagnostik auf der Zeile |
# ty: ignore[rule-name] | Unterdrücken Sie eine spezifische Regel |
# type: ignore | Auch respektiert (mypy-kompatibel) |
Language Server (Editor Integration)
| Editor | Wie |
|---|
| VS Code | Installieren Sie die Astral ty Erweiterung |
| Neovim | Konfigurieren Sie ty server als LSP |
| Any LSP Client | Führen Sie ty server aus |
Der Language Server gibt inline Type Fehler, Hover-Typen und Go-to-Definition mit der gleichen Geschwindigkeit wie die CLI.
Typische Diagnostik
| Diagnostik | Bedeutet |
|---|
invalid-argument-type | Argument passt nicht zum Parameter-Typ |
unresolved-attribute | Attribut existiert nicht auf dem Typ |
possibly-unbound-variable | Variable kann vor Zuweisung verwendet werden |
invalid-return-type | Return passt nicht zur Annotation |
unresolved-import | Import kann nicht aufgelöst werden |
# Ein komplettes modernes Python-Qualitäts-Gate
uv sync # deps, locked und schnell
uv run ruff format . # Format
uv run ruff check . # Lint
uv run ty check # Typen
uv run pytest # Tests
| Tool | Ersetzt |
|---|
| uv | pip, pip-tools, virtualenv, pyenv, poetry |
| Ruff | black, flake8, isort, pyupgrade, + mehr |
| ty | mypy (Type-Checking) |
CI-Integration
# Fail der Build bei Type Errors
uvx ty check --error-on-warning
# Überprüfen Sie nur geänderte Dateien (mit git)
git diff --name-only origin/main -- '*.py' | xargs uvx ty check
ty vs andere Type Checker
| Aspekt | ty | mypy | Pyright |
|---|
| Sprache | Rust | Python | TypeScript/Node |
| Geschwindigkeit | Sehr schnell | Langsamer | Schnell |
| Reife | Neuer | Am gereiftesten | Reif |
| Editor LSP | Eingebaut | Via Plugins | Eingebaut (Pylance) |
| Am besten für | Geschwindigkeit + Astral Stack | Ökosystem-Kompatibilität | VS Code Benutzer |
Ressourcen