Lea la documentación más reciente: explore el repositorio de códigos de GitHub
Ordene sus importaciones para que usted no tenga que hacerlo.
isort es una utilidad/biblioteca de Python para ordenar las importaciones alfabéticamente y separarlas automáticamente en secciones y por tipo. Proporciona una utilidad de línea de comandos, una biblioteca Python y complementos para que varios editores ordenen rápidamente todas sus importaciones. Requiere Python 3.8+ para ejecutarse, pero también admite el formato del código Python 2.
Antes de isortar:
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" )
Después de isortar:
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" )
Instalar isort es tan simple como:
pip install isort
Desde la línea de comando :
Para ejecutar en archivos específicos:
isort mypythonfile.py mypythonfile2.py
Para aplicar recursivamente:
isort .
Si globstar está habilitado, isort .
es equivalente a:
isort ** / * .py
Para ver los cambios propuestos sin aplicarlos:
isort mypythonfile.py --diff
Finalmente, para ejecutar isort atómicamente en un proyecto, aplicando solo los cambios si no introducen errores de sintaxis:
isort --atomic .
(Nota: esto está deshabilitado de forma predeterminada, ya que evita que isort se ejecute en código escrito con una versión diferente de Python).
Desde dentro de Python :
import isort
isort . file ( "pythonfile.py" )
o:
import isort
sorted_code = isort . code ( "import b n import a n " )
Se han escrito varios complementos que permiten utilizar isort desde una variedad de editores de texto. Puede encontrar una lista completa de ellos en la wiki de isort. Además, aceptaré con entusiasmo solicitudes de extracción que incluyan complementos para otros editores de texto y agregaré documentación para ellos cuando me notifiquen.
Notará arriba la configuración "multi_line_output". Esta configuración define cómo se ajustan las importaciones cuando se extienden más allá del límite de longitud de línea y tiene 12 configuraciones posibles.
Para cambiar la forma en que aparecen las sangrías constantes, simplemente cambie la propiedad de sangría con los siguientes formatos aceptados:
Por ejemplo:
" "
es equivalente a 4.
Para los estilos de importación que usan paréntesis, puede controlar si desea incluir o no una coma final después de la última importación con la opción include_trailing_comma
(el valor predeterminado es False
).
A partir de isort 3.1.0, se agregó soporte para importaciones multilínea equilibradas. Con esta opción habilitada, la clasificación cambiará dinámicamente la duración de importación a la que produzca la cuadrícula más equilibrada, mientras se mantiene por debajo de la duración máxima de importación definida.
Ejemplo:
from __future__ import ( absolute_import , division ,
print_function , unicode_literals )
Se producirá en lugar de:
from __future__ import ( absolute_import , division , print_function ,
unicode_literals )
Para habilitar esto, establezca balanced_wrapping
en True
en su configuración o pase la opción -e
a la utilidad de línea de comando.
isort proporciona opciones de configuración para cambiar casi todos los aspectos de cómo se organizan, ordenan o agrupan las importaciones en secciones.
Haga clic aquí para obtener una descripción general de todas estas opciones.
Para hacer que Isort ignore una sola importación, simplemente agregue un comentario al final de la línea de importación que contenga el texto isort:skip
:
import module # isort:skip
o:
from xyz import ( abc , # isort:skip
yo ,
hey )
Para hacer que isort omita un archivo completo, simplemente agregue isort:skip_file
a la cadena de documentación del módulo:
""" my_module.py
Best module ever
isort:skip_file
"""
import b
import a
isort se puede ejecutar o configurar para agregar o eliminar importaciones automáticamente.
Vea una guía completa aquí.
--check-only
isort también se puede utilizar para verificar que el código esté formateado correctamente ejecutándolo con -c
. Cualquier archivo que contenga importaciones mal ordenadas y/o formateadas se enviará a 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 excelente lugar donde se puede usar esto es con un gancho git previo a la confirmación, como este de @acdha:
https://gist.github.com/acdha/8717683
Esto puede ayudar a garantizar un cierto nivel de calidad del código a lo largo de un proyecto.
isort proporciona una función de enlace que se puede integrar en su script de confirmación previa de Git para verificar el código Python antes de confirmar.
Más información aquí.
Tras la instalación, isort habilita un comando setuptools
que verifica los archivos Python declarados por su proyecto.
Más información aquí.
Coloque esta insignia en la parte superior de su repositorio para que otros sepan que su proyecto utiliza isort.
Para README.md:
[ ![ Imports: isort ] ( https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336 )] ( https://pycqa.github.io/isort/ )
O LÉAME.primero:
.. image :: https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336
:target: https://pycqa.github.io/isort/
Para informar una vulnerabilidad de seguridad, utilice el contacto de seguridad de Tidelift. Tidelift coordinará la solución y la divulgación.
isort simplemente significa clasificación de importación. Originalmente se llamaba "sortImports", sin embargo, me cansé de escribir caracteres adicionales y me di cuenta de que camelCase no es pitónico.
Escribí isort porque en una organización en la que solía trabajar, el administrador llegó un día y decidió que todo el código debía tener importaciones ordenadas alfabéticamente. La base del código era enorme y quería que lo hiciéramos a mano. Sin embargo, siendo programador, soy demasiado vago para pasar 8 horas realizando una función sin pensar, pero no demasiado vago para pasar 16 horas automatizándola. Me dieron permiso para abrir sortImports de código abierto y aquí estamos :)
Obtenga isort con soporte profesional con la suscripción Tidelift
El soporte profesional para isort está disponible como parte de la suscripción a Tidelift. Tidelift ofrece a los equipos de desarrollo de software una fuente única para comprar y mantener su software, con garantías de nivel profesional por parte de los expertos que mejor lo conocen, mientras se integra perfectamente con las herramientas existentes.
¡Gracias y espero que te resulte útil!
~Timothy Crosley