ty - Guide du vérificateur de type Python rapide
ty est un extrêmement rapide vérificateur de type Python et language server, écrit en Rust par Astral (l’équipe derrière Ruff et uv). Il applique la même philosophie de performance à la vérification de type : où mypy peut prendre des minutes sur une grande codebase, ty cible une rétroaction quasi-instantanée, rendant la vérification de type pratique à exécuter sur chaque sauvegarde plutôt que seulement en CI. Il complète la chaîne d’outils Python Astral moderne — uv pour l’empaquetage, Ruff pour le lint/format, ty pour les types.
ty est plus nouveau que mypy et toujours en maturation. Validez-le contre votre codebase avant de le rendre une gate CI dure.
Installation
| Méthode | Commande |
|---|
| uv (recommandé) | uv tool install ty |
| uvx (pas d’installation) | uvx ty check |
| pip | pip install ty |
| Vérifier | ty --version |
Vérifier le code
| Commande | Description |
|---|
ty check | Vérifier le projet actuel |
ty check src/ | Vérifier un chemin spécifique |
ty check --watch | Re-vérifier sur les changements de fichier |
ty check --output-format concise | Sortie compacte |
ty check --error-on-warning | Traiter les avertissements comme erreurs |
ty --help | Liste complète des options |
Configuration
ty lit pyproject.toml :
[tool.ty]
# Chemins à vérifier
src = ["src", "tests"]
[tool.ty.environment]
python-version = "3.12"
# Où trouver les dépendances
python = ".venv"
[tool.ty.rules]
# Tuner les diagnostiques individuels
possibly-unbound-attribute = "warn"
unused-ignore-comment = "ignore"
| Section | Objectif |
|---|
[tool.ty] | Layout du projet / chemins inclus |
[tool.ty.environment] | Version Python, venv, chemins de search |
[tool.ty.rules] | Définir chaque règle à error, warn, ou ignore |
Supprimer les diagnostiques
| Forme | Effet |
|---|
# ty: ignore | Supprimer tous les diagnostiques sur la ligne |
# ty: ignore[rule-name] | Supprimer une règle spécifique |
# type: ignore | Aussi respectée (compatible mypy) |
Language Server (intégration éditeur)
| Éditeur | Comment |
|---|
| VS Code | Installer l’extension Astral ty |
| Neovim | Configurer ty server comme un LSP |
| N’importe quel client LSP | Exécuter ty server |
Le language server donne les erreurs de type inline, les types au hover, et aller-à-la-définition avec la même vitesse que le CLI.
Diagnostiques typiques
| Diagnostic | Signifie |
|---|
invalid-argument-type | L’argument ne correspond pas au type du paramètre |
unresolved-attribute | L’attribut n’existe pas sur le type |
possibly-unbound-variable | La variable peut être utilisée avant assignment |
invalid-return-type | Le retour ne correspond pas à l’annotation |
unresolved-import | L’import ne peut pas être résolu |
La chaîne d’outils Astral
# Une gate complète de qualité Python moderne
uv sync # deps, verrouillées et rapides
uv run ruff format . # formater
uv run ruff check . # linter
uv run ty check # types
uv run pytest # tests
| Outil | Remplace |
|---|
| uv | pip, pip-tools, virtualenv, pyenv, poetry |
| Ruff | black, flake8, isort, pyupgrade, + plus |
| ty | mypy (vérification de type) |
Intégration CI
# Échouer le build sur les erreurs de type
uvx ty check --error-on-warning
# Vérifier uniquement les fichiers modifiés (avec git)
git diff --name-only origin/main -- '*.py' | xargs uvx ty check
ty vs autres vérificateurs de type
| Aspect | ty | mypy | Pyright |
|---|
| Langage | Rust | Python | TypeScript/Node |
| Vitesse | Très rapide | Plus lent | Rapide |
| Maturité | Plus nouveau | Plus mature | Mature |
| LSP éditeur | Built-in | Via plugins | Built-in (Pylance) |
| Idéal pour | Vitesse + stack Astral | Compatibilité écosystème | Utilisateurs VS Code |
Ressources