Zum Inhalt springen

ty – Fast Python Type Checker Cheatsheet

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

MethodeBefehl
uv (empfohlen)uv tool install ty
uvx (keine Installation)uvx ty check
pippip install ty
Überprüfenty --version

Code überprüfen

BefehlBeschreibung
ty checkÜberprüfen Sie das aktuelle Projekt
ty check src/Überprüfen Sie einen spezifischen Pfad
ty check --watchRe-check bei Dateien-Änderungen
ty check --output-format conciseKompakte Ausgabe
ty check --error-on-warningBehandeln Sie Warnungen als Fehler
ty --helpVollstä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"
SectionZweck
[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

FormEffekt
# ty: ignoreUnterdrücken Sie alle Diagnostik auf der Zeile
# ty: ignore[rule-name]Unterdrücken Sie eine spezifische Regel
# type: ignoreAuch respektiert (mypy-kompatibel)

Language Server (Editor Integration)

EditorWie
VS CodeInstallieren Sie die Astral ty Erweiterung
NeovimKonfigurieren Sie ty server als LSP
Any LSP ClientFü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

DiagnostikBedeutet
invalid-argument-typeArgument passt nicht zum Parameter-Typ
unresolved-attributeAttribut existiert nicht auf dem Typ
possibly-unbound-variableVariable kann vor Zuweisung verwendet werden
invalid-return-typeReturn passt nicht zur Annotation
unresolved-importImport kann nicht aufgelöst werden

Die Astral Toolchain

# 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
ToolErsetzt
uvpip, pip-tools, virtualenv, pyenv, poetry
Ruffblack, flake8, isort, pyupgrade, + mehr
tymypy (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

AspekttymypyPyright
SpracheRustPythonTypeScript/Node
GeschwindigkeitSehr schnellLangsamerSchnell
ReifeNeuerAm gereiftestenReif
Editor LSPEingebautVia PluginsEingebaut (Pylance)
Am besten fürGeschwindigkeit + Astral StackÖkosystem-KompatibilitätVS Code Benutzer

Ressourcen