Ishpreet
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
Que hace noqa
significa en Python? ¿Es específico solo para Python?
Jimf
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 el código pueda haber generado será ignorada.
Esa línea puede tener algo que “se ve mal” para el linter, pero el desarrollador entiende y tiene la intención de que esté allí por alguna razón.
Para obtener más información, consulte el Documentación de Flake8 para seleccionar e ignorar infracciones.
-
para los linters de python, normalmente es esta declaración, pero para otros linters puede ser diferente, es decir, javascript con jshint es:
// jshint ignore:line
(jshint.com/docs)– Jimf
28 de julio de 2017 a las 11:26
-
También funciona en PyCharm. forma abreviada genérica
# noqa
. O forma larga específica# noinspection PyUnresolvedReferences
por ejemplo.–Bob Stein
16/10/2017 a las 21:41
-
Tenga en cuenta que para pycodestyle/pep8
# nopep8
también se puede usar, que es un poco más claro, en mi opinión.– OozeMeister
6 de marzo de 2019 a las 18:47
Vishvajit Pathak
noqa = NO-QA (SIN garantía de calidad)
Generalmente se usa en código Python para ignorar PEP8 advertencias
Líneas con #noqa
al final será ignorado por los programas linter y no generará ninguna advertencia.
¿Sabes que? Incluso Guido van Rossum (el creador de Python) hizo esta pregunta antes 😀
Un poquito Etimología de # noqa
:
Solía ser “nopep8”, pero cuando Flake8 y Pep8 querían un calificador común, @florentx sugirió “NoQA” como “Sin garantía de calidad” (iirc) y se mantuvo.
algo basico usos de # noqa
(con escama8):
# flake8: noqa
: archivos que contienen esta línea se omiten- líneas que contienen un
# noqa
comentario al final: no emitirá advertencias # noqa: <error>
p.ej,# noqa: E234
al final: pasar por alto errores específicos en una línea- se pueden dar múltiples códigos de error, separados por comas
- los dos puntos antes de la lista de códigos son obligatorios
-
esta es definitivamente la mejor respuesta! académico, histórico, práctico, simple.
– d34n5
19 de noviembre de 2020 a las 2:18
-
@ d34n5 ¡este es definitivamente el mejor comentario! comprensiva, lírica, monolexémica, sencilla.
–Bob Stein
28 de agosto de 2021 a las 14:56
AlfazOeste
Vine aquí después de encontrar una directiva # noqa en una biblioteca con la que estaba trabajando. Como nunca había oído hablar de él, naturalmente llegué aquí después de buscar en Google. Las respuestas proporcionadas aquí son adecuadas, pero quería brindar una mayor elaboración para aquellos que puedan tener curiosidad (ciertamente lo estaba)
-
# noqa
ha evolucionado desde el# nopep8
sintaxis utilizada en versiones anteriores de flake8 -
# noqa
es compatible con IDE, como PyCharm, para usar con sus herramientas de inspección de código integradas. -
# noqa
se puede usar como una directiva previa a la confirmación, de modo que antes de las nuevas confirmaciones se debe completar un proceso de inspección -
# noqa
se puede usar para ignorar todas las advertencias o se pueden dar advertencias específicas para ignorar. Por ejemplo,# noqa: F401
ignorará una advertencia de módulo importado no utilizado.
Como ejemplo, considere el siguiente código:
import os
print("Hello, world!")
Este código importa el os
módulo pero no lo usa. Si uno quisiera usar el # noqa
herramienta para suprimir una advertencia de PEP8, podría escribirse así:
import os # noqa
print("Hello, world!")
esto ignorará todos advertencias Sin embargo, si solo quisiera ignorar una advertencia específica (PEP8 F401 importado pero no utilizado), podría hacerse así:
import os # noqa: F401
print("Hello, world!")
He publicado un artículo con algunos ejemplos de noqa y más elaboración sobre los puntos anteriores.
noqa
lo más probable es que signifiqueno quality assurance
. Le dice al software de análisis de código que ignore las advertencias.– Stevoisiak
30 de enero de 2018 a las 17:23
Relacionado: ¿Cómo hago para que Pyflakes ignore una declaración?
– Stevoisiak
30 de enero de 2018 a las 17:24
En mi cabeza siempre se lee como “sin preguntas”
– a través de
26 de mayo de 2020 a las 18:24