Aller au contenu

ty - Guide du vérificateur de type Python rapide

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éthodeCommande
uv (recommandé)uv tool install ty
uvx (pas d’installation)uvx ty check
pippip install ty
Vérifierty --version

Vérifier le code

CommandeDescription
ty checkVérifier le projet actuel
ty check src/Vérifier un chemin spécifique
ty check --watchRe-vérifier sur les changements de fichier
ty check --output-format conciseSortie compacte
ty check --error-on-warningTraiter les avertissements comme erreurs
ty --helpListe 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"
SectionObjectif
[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

FormeEffet
# ty: ignoreSupprimer tous les diagnostiques sur la ligne
# ty: ignore[rule-name]Supprimer une règle spécifique
# type: ignoreAussi respectée (compatible mypy)

Language Server (intégration éditeur)

ÉditeurComment
VS CodeInstaller l’extension Astral ty
NeovimConfigurer ty server comme un LSP
N’importe quel client LSPExé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

DiagnosticSignifie
invalid-argument-typeL’argument ne correspond pas au type du paramètre
unresolved-attributeL’attribut n’existe pas sur le type
possibly-unbound-variableLa variable peut être utilisée avant assignment
invalid-return-typeLe retour ne correspond pas à l’annotation
unresolved-importL’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
OutilRemplace
uvpip, pip-tools, virtualenv, pyenv, poetry
Ruffblack, flake8, isort, pyupgrade, + plus
tymypy (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

AspecttymypyPyright
LangageRustPythonTypeScript/Node
VitesseTrès rapidePlus lentRapide
MaturitéPlus nouveauPlus matureMature
LSP éditeurBuilt-inVia pluginsBuilt-in (Pylance)
Idéal pourVitesse + stack AstralCompatibilité écosystèmeUtilisateurs VS Code

Ressources