Flake8: игнорировать специальное предупреждение для всего файла

В документах " Игнорирование ошибок" в настоящее время указан способ игнорирования конкретной ошибки для конкретной строки:

example = lambda: 'example'  # noqa: E731

... и способ игнорирования всех ошибок для всего файла:

# flake8: noqa

from foo import unused
function_that_doesnt_exist()
x = 1+       2

... и несколько способов, либо через конфигурацию, либо через параметры командной строки, глобально отключить определенную ошибку во всем проекте.

Но что, если я хочу игнорировать конкретную ошибку во всем отдельном файле - например, отключить предупреждения о неиспользуемом импорте в __init__.py файле __init__.py который просто импортирует несколько классов, чтобы код из других пакетов мог импортировать их от этого в свою очередь? Документы, похоже, не намекают на какой-либо синтаксис для этого. Является ли это возможным?

Ответ 1

Игнорирование определенных ошибок было реализовано только для отдельных строк, но не для отдельных файлов.

Эта функция отслеживается и обсуждается в выпуске № 89, из которого было принято только предложение для каждой строки. Совсем недавно в этом запросе на слияние была предложена реализация, за которой никто не следил.

Тем не менее, появились некоторые расширения для решения этой проблемы:

  • flake8-per-file-ignores позволяет игнорировать определенные предупреждения/ошибки для определенных файлов через запись в конфигурации.

  • flake8-putty утверждает, что делает то же самое, но некоторое время не обновлялся.

Ответ 2

Начиная с Flake8 3.7.0 это можно сделать с помощью --per-file-ignores.

Пример командной строки

flake8 --per-file-ignores='project/__init__.py:F401 setup.py:E121'

Или в вашем конфигурационном файле

per-file-ignores =
    project/__init__.py:F401
    setup.py:E121
    other_project/*:W9

Смотрите документацию здесь: http://flake8.pycqa.org/en/latest/user/options.html?highlight=per-file-ignores#cmdoption-flake8-per-file-ignores