De Mypy à Ty : guide d’adoption du vérificateur de types Python ultra-rapide en Rust créé par l’éditeur de Ruff
(blog.pythonlibrary.org)Résumé :
- Présentation de l’adoption et de la migration vers
ty, le nouveau vérificateur de types Python basé sur Rust publié par Astral (l’éditeur de Ruff). tyse comporte par défaut de manière très proche du mode strict de Mypy et prend en charge nativement l’installation et l’exécution viauv.- Il n’existe pas encore de prise en charge officielle de pre-commit, mais des contournements communautaires sont disponibles, et la méthode d’intégration avec GitHub Actions est également présentée en détail.
Résumé détaillé :
1. Présentation et caractéristiques de Ty
Dans l’écosystème de la vérification de types Python, jusqu’ici dominé par Mypy et Pyright, ty, développé par Astral, fait une nouvelle entrée. Comme Ruff, il est écrit en Rust et se distingue par une très grande rapidité.
2. Installation et exécution en local
ty peut être installé et exécuté facilement via uv.
- Installation :
# Installation de l’outil via uv uv tool install ty@latest # Ou installation standalone prise en charge (voir la documentation) - Exécution :
# Exécution après installation uv run ty # Exécution sans installation (avec uvx) uvx ty # Exécution directe ty check
3. Configuration
La configuration est possible via pyproject.toml ou ty.toml.
- Comportement par défaut : exécuté sans configuration supplémentaire, il se comporte de manière très proche du mode strict de Mypy.
- Limites : pour l’instant, il ne signale pas les annotations de type manquantes. Pour imposer cela, il faut compléter avec les règles
flake8-annotationsde Ruff danspyproject.toml.
4. Intégration avec GitHub Actions
Dans un environnement CI, il est possible de créer .github/workflows/ty.yml afin d’exécuter automatiquement la vérification de types à la création d’une PR.
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
(Remarque : la version de ty doit être mise à jour en fonction des releases.)
5. Intégration à pre-commit
À l’heure actuelle, aucun hook pre-commit officiel n’est pris en charge (issue #269), mais il est possible d’intégrer des contournements fournis par la communauté, comme ty-pre-commit, dans .pre-commit-config.yaml. Une mise à jour de la configuration est recommandée lorsqu’une prise en charge officielle sera disponible.
Aucun commentaire pour le moment.