Lire la dernière documentation - Parcourir le référentiel de code GitHub
isortez vos importations pour que vous n'ayez pas à le faire.
isort est un utilitaire/bibliothèque Python permettant de trier les importations par ordre alphabétique et de les séparer automatiquement en sections et par type. Il fournit un utilitaire de ligne de commande, une bibliothèque Python et des plugins permettant à divers éditeurs de trier rapidement toutes vos importations. Il nécessite Python 3.8+ pour s'exécuter mais prend également en charge le formatage du code Python 2.
Avant le tri :
from my_lib import Object
import os
from my_lib import Object3
from my_lib import Object2
import sys
from third_party import lib15 , lib1 , lib2 , lib3 , lib4 , lib5 , lib6 , lib7 , lib8 , lib9 , lib10 , lib11 , lib12 , lib13 , lib14
import sys
from __future__ import absolute_import
from third_party import lib3
print ( "Hey" )
print ( "yo" )
Après le tri :
from __future__ import absolute_import
import os
import sys
from third_party import ( lib1 , lib2 , lib3 , lib4 , lib5 , lib6 , lib7 , lib8 ,
lib9 , lib10 , lib11 , lib12 , lib13 , lib14 , lib15 )
from my_lib import Object , Object2 , Object3
print ( "Hey" )
print ( "yo" )
L'installation d'isort est aussi simple que :
pip install isort
Depuis la ligne de commande :
Pour exécuter sur des fichiers spécifiques :
isort mypythonfile.py mypythonfile2.py
Pour appliquer de manière récursive :
isort .
Si globstar est activé, isort .
est équivalent à :
isort ** / * .py
Pour afficher les modifications proposées sans les appliquer :
isort mypythonfile.py --diff
Enfin, pour exécuter atomiquement isort sur un projet, en appliquant uniquement les modifications si elles n'introduisent pas d'erreurs de syntaxe :
isort --atomic .
(Remarque : ceci est désactivé par défaut, car cela empêche isort de s'exécuter sur du code écrit à l'aide d'une version différente de Python.)
Depuis Python :
import isort
isort . file ( "pythonfile.py" )
ou:
import isort
sorted_code = isort . code ( "import b n import a n " )
Plusieurs plugins ont été écrits pour permettre d'utiliser isort à partir de divers éditeurs de texte. Vous pouvez en trouver une liste complète sur le wiki isort. De plus, j'accepterai avec enthousiasme les demandes d'extraction qui incluent des plugins pour d'autres éditeurs de texte et j'ajouterai de la documentation à leur sujet dès que j'en serai informé.
Vous remarquerez ci-dessus le paramètre "multi_line_output". Ce paramètre définit comment les importations s'enroulent lorsqu'elles dépassent la limite line_length et dispose de 12 paramètres possibles.
Pour modifier l'apparence des retraits constants, modifiez simplement la propriété indent avec les formats acceptés suivants :
Par exemple:
" "
est équivalent à 4.
Pour les styles d'importation qui utilisent des parenthèses, vous pouvez contrôler si vous souhaitez ou non inclure une virgule de fin après la dernière importation avec l'option include_trailing_comma
(la valeur par défaut est False
).
Depuis isort 3.1.0, la prise en charge des importations multilignes équilibrées a été ajoutée. Avec cette activation, isort modifiera dynamiquement la longueur d'importation pour celle qui produit la grille la plus équilibrée, tout en restant en dessous de la longueur d'importation maximale définie.
Exemple:
from __future__ import ( absolute_import , division ,
print_function , unicode_literals )
Sera produit à la place de :
from __future__ import ( absolute_import , division , print_function ,
unicode_literals )
Pour activer cela, définissez balanced_wrapping
sur True
dans votre configuration ou transmettez l'option -e
dans l'utilitaire de ligne de commande.
isort fournit des options de configuration pour modifier presque tous les aspects de la façon dont les importations sont organisées, ordonnées ou regroupées en sections.
Cliquez ici pour un aperçu de toutes ces options.
Pour que isort ignore une seule importation, ajoutez simplement un commentaire à la fin de la ligne d'importation contenant le texte isort:skip
:
import module # isort:skip
ou:
from xyz import ( abc , # isort:skip
yo ,
hey )
Pour que isort ignore un fichier entier, ajoutez simplement isort:skip_file
à la chaîne doc du module :
""" my_module.py
Best module ever
isort:skip_file
"""
import b
import a
isort peut être exécuté ou configuré pour ajouter/supprimer automatiquement des importations.
Voir un guide complet ici.
--check-only
isort peut également être utilisé pour vérifier que le code est correctement formaté en l'exécutant avec -c
. Tous les fichiers contenant des importations mal triées et/ou formatées seront envoyés vers stderr
.
isort ** / * .py -c -v
SUCCESS: /home/timothy/Projects/Open_Source/isort/isort_kate_plugin.py Everything Looks Good !
ERROR: /home/timothy/Projects/Open_Source/isort/isort/isort.py Imports are incorrectly sorted.
Un excellent endroit où cela peut être utilisé est avec un hook git de pré-commit, comme celui-ci de @acdha :
https://gist.github.com/acdha/8717683
Cela peut aider à garantir un certain niveau de qualité de code tout au long d'un projet.
isort fournit une fonction hook qui peut être intégrée à votre script de pré-commit Git pour vérifier le code Python avant de le valider.
Plus d'informations ici.
Lors de l'installation, isort active une commande setuptools
qui vérifie les fichiers Python déclarés par votre projet.
Plus d'informations ici.
Placez ce badge en haut de votre référentiel pour faire savoir aux autres que votre projet utilise isort.
Pour README.md :
[ ![ Imports: isort ] ( https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336 )] ( https://pycqa.github.io/isort/ )
Ou README.rst :
.. image :: https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336
:target: https://pycqa.github.io/isort/
Pour signaler une vulnérabilité de sécurité, veuillez utiliser le contact de sécurité Tidelift. Tidelift coordonnera le correctif et la divulgation.
isort signifie simplement le tri d'importation. Il s'appelait à l'origine "sortImports", mais j'en ai eu assez de taper des caractères supplémentaires et j'ai réalisé que camelCase n'était pas pythonique.
J'ai écrit isort parce que dans une organisation dans laquelle je travaillais, le responsable est arrivé un jour et a décidé que tout le code devait avoir des importations triées par ordre alphabétique. La base de code était énorme – et il voulait que nous le fassions à la main. Cependant, en tant que programmeur, je suis trop paresseux pour passer 8 heures à exécuter une fonction sans réfléchir, mais pas trop paresseux pour passer 16 heures à l'automatiser. J'ai reçu la permission d'ouvrir sortImports et nous y sommes :)
Bénéficiez d'un soutien professionnel avec l'abonnement Tidelift
Une assistance professionnelle pour isort est disponible dans le cadre de l’abonnement Tidelift. Tidelift offre aux équipes de développement de logiciels une source unique pour acheter et maintenir leurs logiciels, avec des assurances de qualité professionnelle de la part des experts qui les connaissent le mieux, tout en s'intégrant de manière transparente aux outils existants.
Merci et j'espère que vous trouverez isort utile !
~Timothy Crosley