Итак, есть хорошие новости и плохие новости.
- flake8 — это просто оболочка для набора других инструментов, включая pycodestyle.
- Хорошая новость заключается в том, что, насколько я могу судить, эта проблема есть в pycodestyle 2.3.1 и исправлена в 2.4.0.
- Плохая новость заключается в том, что текущая версия flake8, 3.5.0, заявляет о несовместимости с pycodestyle 2.4.0. (См. часто задаваемые вопросы о flake8, чтобы узнать, почему они даже не пытаются быть в будущем -совместим с упакованными инструментами.)
- Хорошей новостью является то, что если вы хотите установить GitLab или GitHub, текущий мастер flake8 поддерживает pycodestyle 2.4.x (а также pyflakes 2.0.x).
- Плохая новость заключается в том, что еще не назначена веха после 3.5.0, а это означает, что никто не утверждает, что текущая вершина дерева протестирована, стабильна и готова к выпуску, и, скорее всего, они фактически еще не закончили тестирование с 2.4.0, они только что изменили версии, потому что это то, что они намерены поддерживать.
Если я установлю pycodestyle 2.3.1 и flake8 3.5.0 (и pyflakes 1.6.0) в чистой среде 3.7, я смогу воспроизвести это предупреждение.
Если я заставлю pip установить pycodestyle 2.4.0, даже несмотря на то, что flake8 жалуется на это, предупреждение исчезнет.
Если я устанавливаю flake8 из GitLab, он перетаскивает pycodestyle 2.4.0 (и pyflakes 2.0.0), и снова предупреждение исчезает.
Это не так уж удивительно, учитывая, что версия 2.4.0 утверждает, что добавляет поддержку Python 3.7 (хотя в PyPI по-прежнему указана только версия 3.6) и исправляет несколько ошибок, связанных с E704, например этот, но при быстром сканировании я не смог найти конкретного соответствующего изменения.
К сожалению, поскольку flake8 на самом деле еще не тестировался с 2.4.0, возможно, что исправление таким образом (будь то принудительная установка несовместимых версий или установка последней версии с GitLab) сломает другие вещи.
В этом случае единственными реальными вариантами являются:
- Сделайте это в любом случае и скрестите пальцы.
- Запускайте pycodestyle вручную, а не через flake8. (Это означает, что его вывод не будет пофайлово объединяться с другими инструментами, он не будет понимать более мощные флаги
noqa
, добавленные flake8, и т. д.)
- Подождите, пока flake8 достигнет этапа официальной поддержки pycodestyle 2.4.0 (или помогите им это сделать).
- Найдите нужное исправление в репозитории pycodestyle и перенесите его на версию 2.3.1.
- Отключите это предупреждение (для каждой строки, для каждого файла или глобально).
person
abarnert
schedule
16.08.2018
flake8 --version
? Я попытался запустить flake8 с вашим кодом в версии 3.6 и получил ту же ошибку, но переход на версию 3.7 исправил ее. - person orn688   schedule 17.08.20183.5.0 (mccabe: 0.6.1, pycodestyle: 2.3.1, pyflakes: 1.6.0) CPython 3.7.0 on Darwin
- person Brian Bruggeman   schedule 17.08.2018flake8
из верхней части репо иpython -m flake8
. Все они имеют одинаковый результат. - person Brian Bruggeman   schedule 17.08.2018