Сделать так, чтобы isort распознавал импорт из приложений Django как собственный импорт
Я работаю над проектом с множеством разных приложений Django.
Я хочу использовать isort
в этом проекте, но импорт из приложений Django (from myapp1.mymodule import myfunction
) видят isort
как сторонний импорт.
Как я могу сделать isort
признать их как сторонний импорт?
Я мог бы добавить в isort
конфигурация (в .cfg
): known_first_party=myapp1,myapp2...
но мне придется вести этот список.
Есть ли способ лучше?
0 ответов
Вы можете использовать
src_paths
возможность указать папку проекта. Вам не нужно поддерживать
known_first_party
список. Связанный исходный код (https://github.com/PyCQA/isort/blob/5.6.4/isort/place.py#L63-L95):
if (
_is_module(module_path)
or _is_package(module_path)
or _src_path_is_module(src_path, root_module_name)
):
return (sections.FIRSTPARTY, f"Found in one of the configured src_paths: {src_path}.")
К сожалению, вам необходимо поддерживать этот список. Чтобы он всегда синхронизировался, вы можете создать тест, внутри которого вы можете прочитать
known_first_party
модули в
.cfg
файл и сравните их со своими приложениями:
Получить приложения django
from django.apps import apps
print([app.name for app in apps.get_app_configs() if not app.name.startswith("django.")])
Получить
known_first_party
Программы
import configparser
config = configparser.ConfigParser()
config.read('setup.cfg')
print(config["isort"]["known_first_party"].split(","))