flake8 не сообщает о слишком длинных строках

Если я создам файл test.py со следующим плохо отформатированным содержимым:

import re
long_string = "foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"
class Foo():
    pass

и запустите flake8 в файле из командной строки следующим образом:

$ flake8 --max-line-length=79 test.py

сообщается только о двух ошибках:

test.py:1:1: F401 're' imported but unused
test.py:3:1: E302 expected 2 blank lines, found 0

О нарушении max-line-length во второй строке не сообщается.

Совершенно случайно (я проверял, будут ли соблюдаться какие-либо параметры команды), я обнаружил, что если добавить такой параметр игнорирования:

$ flake8 --max-line-length=79 --ignore=E302 test.py

Затем сообщается о нарушении длины строки :

test.py:1:1: F401 're' imported but unused
test.py:2:80: E501 line too long (97 > 79 characters)

Я использую Ubuntu 16.04, и моя информация о версии flake8:

2.5.4 (pep8: 1.7.0, mccabe: 0.2.1, pyflakes: 1.1.0) CPython 3.5.1+ on Linux

Когда я разместил связанный вопросn на сайте Emacs Stack Exchange (я думал, что проблема была с пакетом Emacs изначально ), один из пользователей указал, что для flake8 2.5.4 требуется более низкая версия pyflakes. Однако установка flake8 через apt или pip автоматически устанавливает эту конкретную версию pyflakes в качестве зависимости, и я не смог получить более старую версию pyflakes, чтобы посмотреть, решит ли это проблему (возможно, это совсем другой вопрос).

Я что-то не так делаю, или это баг?


person elethan    schedule 03.06.2016    source источник


Ответы (1)


E501 где-то игнорируется. Он находится либо в ~/.config/flake8, либо в локальном каталоге в tox.ini, setup.cfg или .flake8. Где-то в одном из этих файлов вы, вероятно, найдете что-то вроде:

[flake8]
ignore = E501

(Вы также можете увидеть его среди других кодов ошибок.)

Это не ошибка в Flake8, и почти наверняка это вызвано чем-то в вашей среде. Причина, по которой вы видите E501, заключается в том, что вы переопределяете настройку файла конфигурации, указав --ignore в командной строке.

person Ian Stapleton Cordasco    schedule 04.06.2016
comment
Ну, я чувствую себя глупо сейчас. На предыдущей работе я добавил ignore = E501 к ~/.config/flake8. Недавно я обновил свою конфигурацию, добавив max-line-length = 80, но сохранил строку ignore, не понимая, чему соответствует E501... Тогда я предполагаю, что, когда я добавил --ignore=E302 в качестве параметра командной строки, я переопределял параметры ignore в ~/.config/flake8 . Спасибо за помощь! - person elethan; 04.06.2016
comment
Это именно то, что вы сделали. Я торопился, когда ответил ранее, и хотел упомянуть об этом. - person Ian Stapleton Cordasco; 04.06.2016