Прочтите последнюю версию документации — просмотрите репозиторий кода GitHub
сортируйте свой импорт, чтобы вам не пришлось этого делать.
isort — это утилита/библиотека Python для сортировки импортируемых файлов в алфавитном порядке и автоматического разделения на разделы и по типу. Он предоставляет утилиту командной строки, библиотеку Python и плагины для различных редакторов, позволяющие быстро сортировать весь импорт. Для запуска требуется Python 3.8+, но он также поддерживает форматирование кода Python 2.
Перед сортировкой:
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" )
После сортировки:
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" )
Установить isort так же просто, как:
pip install isort
Из командной строки :
Чтобы запустить определенные файлы:
isort mypythonfile.py mypythonfile2.py
Чтобы применить рекурсивно:
isort .
Если globstar включен, isort .
эквивалентно:
isort ** / * .py
Чтобы просмотреть предложенные изменения, не применяя их:
isort mypythonfile.py --diff
Наконец, чтобы атомарно запустить isort для проекта, применяя изменения только в том случае, если они не содержат синтаксических ошибок:
isort --atomic .
(Примечание: по умолчанию это отключено, поскольку предотвращает выполнение isort для кода, написанного с использованием другой версии Python.)
Изнутри Python :
import isort
isort . file ( "pythonfile.py" )
или:
import isort
sorted_code = isort . code ( "import b n import a n " )
Было написано несколько плагинов, которые позволяют использовать isort из различных текстовых редакторов. Полный их список вы можете найти на isort wiki. Кроме того, я с энтузиазмом приму запросы на включение плагинов для других текстовых редакторов и добавлю к ним документацию по мере получения уведомления.
Вы заметите параметр «multi_line_output» выше. Этот параметр определяет, как импортируется перенос, когда он выходит за пределы ограничения line_length, и имеет 12 возможных настроек.
Чтобы изменить способ отображения постоянных отступов, просто измените свойство отступа, указав следующие принятые форматы:
Например:
" "
эквивалентно 4.
Для стилей импорта, в которых используются круглые скобки, вы можете контролировать, включать ли завершающую запятую после последнего импорта с помощью параметра include_trailing_comma
(по умолчанию — False
).
Начиная с isort 3.1.0 была добавлена поддержка сбалансированного многострочного импорта. Если эта опция включена, isort будет динамически изменять длину импорта на ту, которая создает наиболее сбалансированную сетку, оставаясь при этом ниже максимальной установленной длины импорта.
Пример:
from __future__ import ( absolute_import , division ,
print_function , unicode_literals )
Будет производиться вместо:
from __future__ import ( absolute_import , division , print_function ,
unicode_literals )
Чтобы включить это, установите для balanced_wrapping
значение True
в вашей конфигурации или передайте параметр -e
в утилиту командной строки.
isort предоставляет параметры конфигурации, позволяющие изменить практически каждый аспект организации, упорядочения или группировки импорта в разделах.
Нажмите здесь, чтобы просмотреть все эти варианты.
Чтобы заставить isort игнорировать одиночный импорт, просто добавьте комментарий в конце строки импорта, содержащий текст isort:skip
:
import module # isort:skip
или:
from xyz import ( abc , # isort:skip
yo ,
hey )
Чтобы isort пропускал весь файл, просто добавьте isort:skip_file
в строку документа модуля:
""" my_module.py
Best module ever
isort:skip_file
"""
import b
import a
isort можно запустить или настроить для автоматического добавления/удаления импорта.
Полное руководство смотрите здесь.
--check-only
isort также можно использовать для проверки правильности форматирования кода, запустив его с параметром -c
. Любые файлы, содержащие неправильно отсортированные и/или отформатированные импортированные данные, будут выведены в 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.
Это можно использовать с помощью git-хука перед фиксацией, например, от @acdha:
https://gist.github.com/acdha/8717683
Это может помочь обеспечить определенный уровень качества кода на протяжении всего проекта.
isort предоставляет функцию перехвата, которую можно интегрировать в сценарий предварительной фиксации Git для проверки кода Python перед фиксацией.
Дополнительная информация здесь.
После установки isort включает команду setuptools
, которая проверяет файлы Python, объявленные вашим проектом.
Дополнительная информация здесь.
Поместите этот значок вверху своего репозитория, чтобы другие знали, что ваш проект использует isort.
Для README.md:
[ ![ Imports: isort ] ( https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336 )] ( https://pycqa.github.io/isort/ )
Или README.first:
.. image :: https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336
:target: https://pycqa.github.io/isort/
Чтобы сообщить об уязвимости безопасности, воспользуйтесь контактом службы безопасности Tidelift. Tidelift будет координировать исправление и раскрытие информации.
isort просто означает сортировку импорта. Первоначально он назывался «sortImports», однако я устал вводить лишние символы и пришел к выводу, что CamelCase не является Pythonic.
Я написал isort, потому что в организации, где я работал, однажды пришел менеджер и решил, что весь код должен иметь импорт, отсортированный по алфавиту. База кода была огромной, и он хотел, чтобы мы делали это вручную. Однако, будучи программистом - мне лень тратить 8 часов на бездумное выполнение функции, но не лень тратить 16 часов на ее автоматизацию. Мне дали разрешение на открытый исходный код sortImports, и вот мы здесь :)
Получите профессиональную поддержку isort с подпиской Tidelift.
Профессиональная поддержка isort доступна в рамках подписки Tidelift. Tidelift предоставляет командам разработчиков программного обеспечения единый источник для приобретения и обслуживания своего программного обеспечения с гарантиями профессионального уровня от экспертов, которые знают его лучше всего, а также обеспечивает плавную интеграцию с существующими инструментами.
Спасибо, и я надеюсь, что isort окажется для вас полезным!
~ Тимоти Кросли