Von Mypy zu Ty: Leitfaden zur Einführung des ultraschnellen Rust-basierten Python-Type-Checkers vom Ruff-Hersteller
(blog.pythonlibrary.org)Zusammenfassung:
- Behandelt werden die Einführung und Migration zum neuen Rust-basierten Python-Type-Checker
ty, den Astral (der Hersteller von Ruff) veröffentlicht hat. tyarbeitet standardmäßig ähnlich wie der Strict-Modus von Mypy und unterstützt Installation und Ausführung nativ überuv.- Eine offizielle pre-commit-Unterstützung gibt es noch nicht, aber Community-Workarounds können genutzt werden; außerdem wird die Integration in GitHub Actions ausführlich vorgestellt.
Ausführliche Zusammenfassung:
1. Einführung in Ty und seine Merkmale
Im Python-Type-Checking-Ökosystem, das bisher von Mypy und Pyright geprägt wurde, ist mit ty nun ein neuer Kandidat von Astral erschienen. Wie Ruff ist auch ty in Rust geschrieben und entsprechend sehr schnell.
2. Installation und lokale Ausführung
ty lässt sich bequem über uv installieren und ausführen.
- Installation:
# Tool über uv installieren uv tool install ty@latest # oder Standalone-Installation unterstützt (siehe Dokumentation) - Ausführung:
# nach der Installation ausführen uv run ty # ohne Installation ausführen (mit uvx) uvx ty # direkt ausführen ty check
3. Konfiguration
Die Konfiguration ist über pyproject.toml oder ty.toml möglich.
- Standardverhalten: Wird
tyohne zusätzliche Konfiguration ausgeführt, verhält es sich sehr ähnlich zum Strict-Modus von Mypy. - Einschränkungen: Derzeit werden fehlende Type Hints nicht hervorgehoben. Wenn dies erzwungen werden soll, müssen die
flake8-annotations-Regeln von Ruff ergänzend inpyproject.tomleingetragen werden.
4. Integration in GitHub Actions
In einer CI-Umgebung kann Type Checking beim Erstellen eines PR automatisch ausgeführt werden, indem .github/workflows/ty.yml entsprechend angelegt wird.
name: ty
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
workflow_dispatch:
jobs:
build:
if: github.event.pull_request.draft == false
runs-on: self-hosted
steps:
- uses: actions/checkout@v3
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: "3.12"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install ty==0.0.7
- name: Run ty
run: ty check
continue-on-error: false
(Hinweis: Die ty-Version muss je nach Release-Stand aktualisiert werden.)
5. Pre-commit-Integration
Derzeit wird noch kein offizieller pre-commit-Hook unterstützt (Issue #269), aber Community-Workarounds wie ty-pre-commit können zur Integration in .pre-commit-config.yaml genutzt werden. Sobald es offizielle Unterstützung gibt, sollte die Konfiguration entsprechend aktualisiert werden.
Noch keine Kommentare.