Microsoft publie un contrôleur de type rapide pour Python
L’ambition de l’outil Pyright, offert par Microsoft, est de forcer le contrôle du type dans Python. Il assure être plus rapide que les projets existants et il n’a pas besoin de Python lui-même pour fonctionner.
Microsoft vient de dévoiler Pyright, un outil open source de vérification de type statique pour Python, plus rapide que les solutions de contrôle de type présentes comme Mypy. Écrit en TypeScript et fonctionnant sur Node.js, Pyright ne nécessite pas de runtime Python. Il peut être utilisé comme plug-in Visual Studio Code, mais il peut aussi cheminer comme outil autonome en ligne de commande. L’éditeur assure dans le document escortant le projet que Pyright est « 5X plus rapide » que d’autres vérificateurs de type Python comme Mypy, Pytype, et Pyre, eux-mêmes écrits en Python. L’écriture de ces outils en Python est pratique, mais ils ne dominent pas être plus rapides que Python lui-même, et le runtime par défaut de Python n’est pas un foudre de guerre pour ce qui est de la performance. Cela dit, la performance de ces outils n’est pas absolue : elle dépend particulièrement des systèmes sur lesquels ils marchent et des bases de code qu’ils analysent.
Pyright prend en charge les primordiales syntaxes de type hinting et les syntaxes liées au type maintenant disponibles dans les typages de Python, les syntaxes d’explication de variables et le sous-typage structurel. Il permet pareillement de faire des inférences de type dans de nombreuses situations. Le projet s’appuie sur les informations de type « stub » de Python pour réaliser ses analyses, de sorte qu’il peut être synchronisé avec Python, même s’il n’est pas écrit dans le langage.
Une augmentation pour Visual Studio Code
Quand il est réalisé comme plug-in Visual Studio Code, Pyright délivre un feedback direct sur les informations de code du type proclamées avec des infobulles, des liens de définition de symboles, et ainsi de suite. Une partie des fonctions offertes par Pyright doublonne légèrement avec l’offre Python Language Server de Microsoft. Néanmoins, Pyright est essentiellement focalisé sur la vérification de type et non sur d’autres fonctions de linting de code qui servent à progresser la qualité de code.
Le projet est toujours qualifié de « travail en cours ». Plusieurs fonctionnalités apparaissent avec l’indication « inachevée » ou « à faire ». C’est le cas par exemple de l’inférence de type pour les générateurs ou l’acceptation pour les déclarations async/await. Par contre, Microsoft ne prévoit nettement pas d’additionner le support de Python 2, ni bientôt, ni plus tard, ce qui n’est pas le cas de Mypy, et de plusieurs autres mesures de vérification de code et de type pour Python.
Le rôle essentiel des contrôleurs de type pour Python est de garantir la bonne exécution d’un programme, et non pas d’avancer les applications Python. Malgré cela, certains projets essayent d’optimiser la compilation Python en l’annotant par type pour rendre le langage plus compétitif. C’est le cas de Mypyc, par exemple, qui compile un Python annoté en C. Pyright pourrait à terme servir de base à un projet similaire.