Outils

L’écosystème Python est peuplé de nombreux outils pour vous aider à écrire et maintenir votre code.

Linters

Un linter est un programme qui permet de vérifier le style des fichiers de code, et notamment qu’ils respectent les règles énoncées par la PEP8.

La PEP8 est à l’origine une description du style que doivent adopter les développements au sein de Python lui-même, qui s’est popularisée et est maintenant considérée comme un standard pour tous les projets Python.
Il ne faut cependant pas la voir comme un énoncé de règles strictes, comme dirait un célèbre pirate « c’est plus un guide qu’un véritable règlement ».

Pour en savoir plus sur les règles de style d’un code Python en général, je vous invite à consulter mon article dédié aux secrets d’un code pythonique.

Flake8

Flake8 est donc un outil en ligne de commande permettant de vérifier la conformité avec la PEP8, relevant toutes les infractions trouvées dans les fichiers de code (mauvais espacements, lignes trops longues, etc.).

On installe l’outil par la commande pip install flake8, puis il s’utilise via flake8, optionellement suivi de répertoires ou de fichiers à explorer (par défaut il explorera tout le répertoire courant).

Flake8 est configurable, et permet d’activer ou désactiver certaines règles de style, je vous invite pour cela à consulter sa page de documentation.

Pylint

Pylint est un outil qui va plus loin que Flake8. Il ne se contente pas de relever les fautes de style, mais cherche aussi à identifier de potentiels erreurs et problèmes de conception.

L’installation pip install pylint fournit un utilitaire pylint, que l’on appelle en lui donnant les fichiers à vérifier en arguments.

Il est lui aussi hautement configurable, et je vous renvoie pour cela à sa documentation.

Black

Black est un outil relativement récent dont l’objectif est d’unifier les règles de style Python et éviter les querelles de chapelles : il est prévu pour ne pas être configurable et donc appliquer le même style partout.

Après une installation via pip install black, on utilise la commande black en lui fournissant des fichiers ou répertoires à explorer, que Black se chargera de réécrire selon son style.

La page de documentation du projet vous renseignera davantage sur ses fonctionnalités.

isort

isort est un outil d’un autre genre, qui s’occupe de l’ordonnancement des lignes d’import. On peut lui spécifier une configuration et il se chargera de réordonner de façon logique les imports : d’abord la bibliothèque standard, puis les modules tiers, puis le paquet courant, etc.

Il s’installe en tapant pip install isort puis est disponible par la commande isort qui prend optionnellement des fichiers ou répertoires en arguments (s’applique à tout le répertoire par défaut).

Pour plus d’informations, rendez-vous sur la documentation d'isort.

mypy

mypy est un outil d’analyse statique, qui permet de s’assurer du bon comportement d’un programme.

Sans exécuter le code, mypy va simplement l’analyser pour regarder si les opérations qui sont faites sur les données sont cohérentes (via les annotations de types) et ainsi éviter un certain nombre de bugs (par exemple des ValueError à l’exécution car un cas aurait été oublié).

Les annotations de types permettent de resteindre l’ensemble de définition des fonctions (via les types de valeurs autorisées) et ainsi mettre en évidence les cas qui ne s’y conforment pas : par exemple si une fonction attend un argument int et qu’on l’appelle avec une valeur issue d’une autre fonction qui peut renvoyer un int ou None, cela soulève un problème car le cas de None n’est pas correctement géré.

On installe mypy avec la commande pip install mypy, puis on l’exécute en lui fournissant les fichiers à tester : mypy fichier.py. Il s’occupera alors d’analyser le code et de reporter les erreurs qu’il y trouvera.

La correction des erreurs renvoyées est à votre discrétion, vous pouvez choisir de les ignorer si vous savez qu’elles n’ont pas de chance de produire de bug à l’exécution, mais il est alors préférable d’annoter le programme en conséquence pour éviter qu’elles soient relevées.