Nous allons voir comment configurer votre éditeur de code Visual Studio Code (VSCode) pour suivre les conventions de code en python PEP8 .
Dans tous mes projets j'utilise tox qui permet d'automatiser le processus de formatage et l'intégrer à ma CI gitlab.
Pour le formatage de python j'utilise flake8, car avec tox pylint ne permet d'utiliser la configuration de ce fichier pour VSCode. J'installe la librairie en local afin de l'utiliser sur tous mes projets
Copier le code
1 python3 -m pip install --user flake8
Dans ma configuration VSCode je mets cela
Copier le code
1 2 3 4 5 "python.linting.enabled": true, "python.linting.pylintEnabled": false, "python.linting.flake8Enabled": true, "python.linting.flake8Args" : ["--config=tox.ini", "--statistics", "--count", "."], "python.linting.lintOnSave": true
Et dans ma configuration tox.ini de mon projet
Copier le code
1 2 3 4 5 6 7 [flake8] # https://pep8.readthedocs.io/en/latest/intro.html#error-codes exclude = .pytest_cache,.tox,.vscode,build,dist,log ignore= R0903 max-line-length=200 max-complexity=10
Les informations du lint s'affiche dans l'onglet "Problems", il ne vous reste plus qu'à (tout) corriger.
Mais faire cela à la main peut-être fastidieux, dans ce cas l'outil suivant peut vous aider.
Autopep8 est un formateur qui permet de modifier vos fichiers avec option --in-place (contrairement à un linter qui vous donne uniquement des informations) selon la syntaxe de la PEP8.
Copier le code
1 python3 -m pip install --user pep8 autopep8
J'utilise autopep8 car VSCode me fait un reformatage de mon fichier à la sauvegarde quand il est sauvegardé.
Copier le code
1 "python.formatting.provider": "autopep8",
Il est présent dans mon fichier de configuration tox mais je préfère lancer les corrections dans mon environnement de dev plutôt qu'après (CI), les modifications automatiques pourraient avoir un impact sur l’exécution du code.
Il y a un outil hyper intéressant que le précédent ne couvre pas, c'est la suppression des packages importés mais non utilisés.
Autoflake est un script permettant notamment de supprimer les imports automatiquement avec options --remove-all-unused-imports.
Copier le code
1 pip install --user autoflake
Ce nettoyage peut être lancé avec la commande tox -e autoflake
Mais je préfère le lancer en automatique à la sauvegarde de vos fichiers, pour cela il faut installer une extension VSCode SaveAndRunReg
Copier le code
1 2 3 4 5 6 7 8 9 10 "saveAndRunReg": { "commands": [ { "match": ".py", "cmd": " autoflake --in-place --recursive --remove-unused-variables --remove-all-unused-imports --exclude '__init_.py,dev.py,production.py' ${workspaceFolder}", "useShortcut": false, "silent": false } ] }
Il ne vous reste plus qu'à coder, et vous le ferez bien avec ces outils !