Introduction

Les développeurs Python sont confrontés à une multitude de vérificateurs de types, notamment mypy, Pyrefly, Pyright, ty et Zuban. Cette situation peut sembler complexe pour les mainteneurs de bibliothèques qui doivent gérer plusieurs outils de vérification de types.

Contexte Technique

Les vérificateurs de types sont essentiels pour améliorer la qualité et la sécurité du code. Cependant, chaque outil a ses propres règles et exigences, ce qui peut entraîner des problèmes de compatibilité et de maintenance. Par exemple, Pyrefly est plus strict que mypy, ce qui nécessite des annotations de type plus explicites.

Analyse et Implications

L'approche traditionnelle consiste à exécuter les vérificateurs de types sur le code source, mais cela peut entraîner des problèmes de pollution de code avec des commentaires de type-ignore. Une meilleure approche consisterait à exécuter les vérificateurs de types sur les tests, ce qui permet de vérifier que l'API publique de la bibliothèque fonctionne correctement avec différents outils de vérification de types.

Le cas de Polars, une bibliothèque de données modernes, illustre cette approche. En exécutant Pyrefly sur les tests de Polars, les développeurs ont pu identifier et corriger des bugs sans polluer le code avec des commentaires de type-ignore.

Perspective

Les mainteneurs de bibliothèques devraient donner la priorité à l'exécution de plusieurs vérificateurs de types sur leurs tests, plutôt que de les exécuter sur leur code source. Cela permet de garantir que l'API publique de la bibliothèque fonctionne correctement avec différents outils de vérification de types, ce qui est essentiel pour les utilisateurs de la bibliothèque.