¿Qué significa '# noqa' en los comentarios de Python?

162

Mientras buscaba en un proyecto de Python, encontré algunas líneas comentadas con # noqa.

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

¿Qué noqasignifica en Python? ¿Es específico solo de Python?

Ishpreet
fuente
3
noqalo más probable significa no quality assurance. Le dice al software de análisis de código que ignore las advertencias.
Stevoisiak
En mi cabeza siempre se lee como "sin preguntas"
hasta

Respuestas:

198

Agregando # noqa a una línea indica que el linter (un programa que verifica automáticamente la calidad del código) no debe verificar esta línea. Cualquier advertencia que haya generado el código será ignorada.

Esa línea puede tener algo que "se ve mal" para la interfaz, pero el desarrollador entiende y tiene la intención de que esté allí por alguna razón.

Para obtener más información, consulte la documentación de Flake8 para Seleccionar e ignorar infracciones .

jimf
fuente
3
para los linters de Python, es esta declaración por lo general, pero para otros linters puede ser diferente, es decir, javascript w / jshint es: // jshint ignore:line( jshint.com/docs )
jimf
77
Funciona en PyCharm también. Forma abreviada genérica # noqa. O forma larga específica # noinspection PyUnresolvedReferencespor ejemplo.
Bob Stein
¿Qué tal # noqa F0001?
youkaichao
55
Tenga en cuenta que para pycodestyle / pep8 # nopep8también se puede usar, lo cual es un poco más claro, en mi opinión.
OozeMeister
53

noqa = NO-QA (SIN garantía de calidad)

En general, se hace referencia en Python Programming para ignorar las advertencias de PEP8 .

En palabras simples, las líneas que tienen #noqa al final serán ignoradas por los programas linter y no generarán ninguna advertencia.

Vishvajit Pathak
fuente
15

¿Sabes que? Incluso Guido van Rossum (el creador de Python) hizo esta pregunta antes : D

Un poco de etimología de# noqa :

Solía ​​ser "nopep8" pero cuando Flake8 y Pep8 querían un calificador común @florentx sugirió "NoQA" como en "Sin garantía de calidad" (iirc) y se quedó.

Algunos usos básicos de# noqa (con flake8 ):

  • # flake8: noqa: se omiten los archivos que contienen esta línea
  • líneas que contienen un # noqacomentario al final : no emitirá advertencias
  • # noqa: <error>, por ejemplo, # noqa: E234 al final : ignorar errores específicos en una línea
    • Se pueden dar múltiples códigos de error, separados por comas
    • los dos puntos antes de que se requiera la lista de códigos
YaOzI
fuente