Различное поведение flake8 локально и в tox

У меня есть проект, в котором используется tox. И я бегуflake8в этом. До сих пор все работало нормально, пока я не решил запустить flake8 на тестах.

Когда я звоню flake8 ./testsЯ получаю какой-то результат. Тогда я смогу это исправить. Теперь у меня в папке с тестами нет никаких предупреждений. Но что-то странное происходит, когда я запускаю его в tox (я на 100% уверен, что такие пакеты, как WPS или isort, имеют те же версии, что и те, которые я использую локально). В основном я получаюisortпредупреждения. Проблема выглядит так:

from freezegun import freeze_time

from foo.bar import baz

Итак, у меня есть сторонний импорт библиотеки над импортом из моей библиотеки. И здесь все хорошо,vscodeс установленным flake8 или запущенным flake8 в терминале оба здесь не дают никаких предупреждений. Проблема, я думаю, в том, чтоfoo здесь обрабатывается как сторонняя библиотека, поэтому, например, в этом случае flake хочет, чтобы я удалил новую строку между этими двумя.

Я в основном пробовал все (например, pytest-flake8, но это нехорошо, поскольку он также запускает тесты, которые у меня есть в другом задании tox). Есть ли способ решить эту проблему, потому что из-за этого мои трубопроводы продолжают падать.

PS noqaПредупреждения IXXX здесь не решение, так как я хочу их, но не неправильным образом, который я представил выше.

PS 2 у меня есть known_first_party=foo в [isort] раздел в моем setup.cfg

1 ответ

isort чувствителен к библиотекам, установленным рядом с ним - это означает, что вам ~ обычно необходимо установить все свои зависимости при его использовании

Я работал над несколькими обходными путями:

  • seed-isort-config(изначально для предварительной фиксации) - это устанавливаетknown_third_party в соответствующий список, такой что isort запускать где угодно с любым набором зависимостей, все равно разрешится правильно
  • reorder_python_imports - альтернативный сортировщик импорта, который не страдает ограничениями isort (механизм, который приводит в действие это, также тот же механизм, что и классификация импорта в seed-isort-config)

(отказ от ответственности: я являюсь автором вышеуказанных инструментов, я также flake8 сопровождающий)

Другие вопросы по тегам