Pyre : un vérificateur de type pour Python conçu par Facebook

Par:
fredericmazue

lun, 14/05/2018 - 16:44

Facebook et Instagram utilisent beaucoup Python en raison de son expressivité, de sa flexibilité et de sa productivité.

Mais lorsqu'on travaille sur des millions de lignes de code, que ce soit avec Python ou tout autre langage, des difficultés se présentent. Notamment, pour ce langage dynamiquement typé, l'absence de typage statique rend ardue la modification d'une large base de code existante, avec le risque d'introduire des erreurs. De plus l'absence de typage statique rend difficile la création d'outils de recherche de code, de saisie semi-automatique, de navigation et de refactoring de qualité.

C'est pour cette raison que Facebook a créé Pyre, un vérificateur de type qui est conforme aux spécifications d'annotations de type définies par Guido van Rossum lui-même dans PEP 484 et qui peut servir de base pour développer des outils d'analyse statique plus approfondis.

Pyre a été conçu avec une performance interactive en tête, souligne Facebook. Le but est de fournir toutes les erreurs de type pertinentes dès que possible. Pour ce faire, Pyre fonctionne comme un serveur qui met continuellement à jour sa compréhension de votre code en mémoire. Il utilise Watchman (un service de surveillance de fichiers également proposé par Facebook) pour repérer les modifications apportées à votre code (c'est-à-dire que Pyre est averti dès que vous cliquez sur «sauvegarder» dans votre éditeur favori).

Pyre maintient une représentation graphique de dépendance de votre code. Lorsque votre code change, Pyre ne ré-analysera que le code qui a changé et ses dépendances directes, mettant à jour le graphe de dépendance en cours de route. Les résultats sont disponibles depuis la ligne de commande, sous forme de JSON structuré, ou via l'intégration avec VSCode et Nuclide. Au-delà de la vérification de type, Pyre prend en charge un certain nombre de fonctionnalités, telles que le re-contrôle automatique des fichiers édités, via le Language Server Protocol (LSP).

Pyre est conçu pour être hautement parallèle, optimisant les réponses afin d'assurer une réactivité immédiate, même dans une grande base de code.

Pyre est open source. Son code est sur GitHub.