Что означает "# noqa" в комментариях Python?

При поиске в проекте Python я нашел несколько строк с комментариями # noqa.

import sys
sys.path.append(r'C:\dev')
import some_module   # noqa

Что означает noqa в Python? Это специфично только для Python?

Ответ 1

Добавление # noqa в строку означает, что линтер (программа, которая автоматически проверяет качество кода) не должен проверять эту строку. Любые предупреждения, которые мог сгенерировать код, будут игнорироваться.

Эта строка может иметь что-то, что "выглядит плохо" для линтера, но разработчик понимает и намеревается сделать это по какой-то причине.

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

Ответ 2

noqa = NO-QA (NO Quality Assurance)

Как правило, в программировании на Python игнорируются предупреждения PEP8.

Проще говоря, строки С#noqa в конце будут игнорироваться программами linter и не будут выдавать никаких предупреждений.

Ответ 3

Знаешь что? Даже Гвидо ван Россум (создатель Python) задавал этот вопрос раньше: D

Немного этимология # noqa:

Раньше это был "nopep8", но когда Flake8 и Pep8 хотели общий квалификатор, @florentx предложил "NoQA", как в "No Quality Assurance" (iirc), и он застрял.

Некоторые основные применения # noqaflake8):

  • # flake8: noqa: файлы, содержащие эту строку, пропускаются
  • строки, которые содержат комментарий # noqa в конце: не будут выдавать предупреждения
  • # noqa: <error>, например, # noqa: E234 в конце: игнорировать определенные ошибки в строке
    • можно указать несколько кодов ошибок через запятую
    • двоеточие перед списком кодов требуется