O que significa '# noqa' nos comentários do Python?

162

Ao pesquisar em um projeto Python, encontrei algumas linhas comentadas # noqa.

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

O que noqasignifica em Python? É específico apenas para Python?

Ishpreet
fonte
3
noqaprovavelmente significa no quality assurance. Ele informa ao software de análise de código que ignore os avisos.
Stevoisiak 30/01
Na minha cabeça, sempre se lê como "sem perguntas"
thrau

Respostas:

198

Adicionar # noqauma linha indica que o linter (um programa que verifica automaticamente a qualidade do código) não deve verificar essa linha. Quaisquer avisos que esse código possa ter gerado serão ignorados.

Essa linha pode ter algo que "parece ruim" para o linter, mas o desenvolvedor entende e pretende que ele esteja lá por algum motivo.

Para obter mais informações, consulte a documentação do Flake8 para selecionar e ignorar violações .

jimf
fonte
3
para linters python, é esta declaração normalmente, mas para outros linters pode ser diferente, ou seja, javascript w / jshint é: // jshint ignore:line( jshint.com/docs )
jimf
7
Também funciona em PyCharm. Forma abreviada genérica # noqa. Ou formulário longo específico, # noinspection PyUnresolvedReferencespor exemplo.
Bob Stein
Que tal # noqa F0001?
youkaichao
5
Note que para pycodestyle / pep8 # nopep8também pode ser usado, o que é um pouco mais claro.
OozeMeister
53

noqa = NO-QA (NO Quality Assurance)

Geralmente é referido na Programação em Python para ignorar os avisos do PEP8 .

Em palavras simples, as linhas com #noqa no final serão ignoradas pelos programas linter e não emitirão nenhum aviso.

Vishvajit Pathak
fonte
15

Você sabe o que? Até Guido van Rossum (o criador do Python) fez essa pergunta antes : D

Um pouco de etimologia de# noqa :

Costumava ser "nopep8", mas quando Flake8 e Pep8 queriam um qualificador comum, a @florentx sugeria "NoQA" como em "No Quality Assurance" (iirc) e fica preso.

Alguns usos básicos de# noqa (com flake8 ):

  • # flake8: noqa: arquivos que contêm essa linha são ignorados
  • linhas que contêm um # noqacomentário no final : não emitirá avisos
  • # noqa: <error>, por exemplo, # noqa: E234 no final : ignore erros específicos em uma linha
    • vários códigos de erro podem ser fornecidos, separados por vírgula
    • dois pontos antes da lista de códigos ser necessária
YaOzI
fonte