'What does '# noqa' mean in Python comments?
While searching through a Python project, I found a few lines commented with # noqa.
import sys
sys.path.append(r'C:\dev')
import some_module # noqa
What does noqa mean in Python? Is it specific to Python only?
Solution 1:[1]
noqa = NO-QA (NO Quality Assurance)
It's generally used in Python code to ignore PEP8 warnings.
Lines with #noqa at the end will be ignored by linter programs and won't raise any warnings.
Solution 2:[2]
You know what? Even Guido van Rossum (the creator of Python) asked this question before :D
It used to be "nopep8" but when Flake8 and Pep8 wanted a common qualifier @florentx suggested "NoQA" as in "No Quality Assurance" (iirc) and it stuck.
Some basic usages of # noqa (with flake8):
# flake8: noqa: files that contain this line are skipped- lines that contain a
# noqacomment at the end: will not issue warnings # noqa: <error>, e.g.,# noqa: E234at the end: ignore specific errors on a line- multiple error codes can be given, separated by comma
- the colon before the list of codes is required
Solution 3:[3]
Came here after finding a # noqa directive in a library that I was working with. Having never heard of it, I naturally arrived here after searching on Google. The answers provided here are adequate but I wanted to provide some further elaboration for those that may be curious (I certainly was)
# noqahas evolved from the# nopep8syntax used in previous releases of flake8# noqais supported by IDEs, like PyCharm, for use with their built-in code inspection tools.# noqacan be used as a pre-commit directive, such that prior to new commits an inspection process must complete# noqacan be used to ignore all warnings or given specific warnings to ignore. For example,# noqa: F401will ignore an unused imported module warning.
As an example, consider the following code:
import os
print("Hello, world!")
This code imports the os module but doesn't use it. If one wanted to use the # noqa tool to suppress a PEP8 warning, it could be written as such:
import os # noqa
print("Hello, world!")
This will ignore all warnings. However, if one were only to want to ignore a specific warning (PEP8 F401 imported but not used), it could be done as such:
import os # noqa: F401
print("Hello, world!")
I've published an article with some noqa examples and more elaboration on the above points.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | jeffhale |
| Solution 2 | YaOzI |
| Solution 3 | wyz23x2 |
