Pyflakes analyzes programs and detects various errors. It works by parsing the source file, not importing it, so it is safe to use on modules with side effects. It's also much faster. It is available on PyPI and it supports all active versions of Python: 2.7 and 3.4 to 3.8.
NOQA stands for NO Quality Assurance. What this typically means is that if you have any warning in your IDE, then if you add a comment as # noqa at the end of the line then the warning will be ignored by the IDE.
If you can use flake8 instead - which wraps pyflakes as well as the pep8 checker - a line ending with
# NOQA
(in which the space is significant - 2 spaces between the end of the code and the #
, one between it and the NOQA
text) will tell the checker to ignore any errors on that line.
I know this was questioned some time ago and is already answered.
But I wanted to add what I usually use:
try:
import json
assert json # silence pyflakes
except ImportError:
from django.utils import simplejson as json # Python 2.4 fallback.
Yep, unfortunately dimod.org is down together with all goodies.
Looking at the pyflakes code, it seems to me that pyflakes is designed so that it will be easy to use it as an "embedded fast checker".
For implementing ignore functionality you will need to write your own that calls the pyflakes checker.
Here you can find an idea: http://djangosnippets.org/snippets/1762/
Note that the above snippet only for for comments places on the same line. For ignoring a whole block you might want to add 'pyflakes:ignore' in the block docstring and filter based on node.doc.
Good luck!
I am using pocket-lint for all kind of static code analysis. Here are the changes made in pocket-lint for ignoring pyflakes: https://code.launchpad.net/~adiroiban/pocket-lint/907742/+merge/102882
To quote from the github issue ticket:
While the fix is still coming, this is how it can be worked around, if you're wondering:
try: from unittest.runner import _WritelnDecorator _WritelnDecorator; # workaround for pyflakes issue #13 except ImportError: from unittest import _WritelnDecorator
Substitude _unittest and _WritelnDecorator with the entities (modules, functions, classes) you need
-- deemoowoor
Here is a monkey patch for pyflakes that adds a # bypass_pyflakes
comment option.
#!/usr/bin/env python
from pyflakes.scripts import pyflakes
from pyflakes.checker import Checker
def report_with_bypass(self, messageClass, *args, **kwargs):
text_lineno = args[0] - 1
with open(self.filename, 'r') as code:
if code.readlines()[text_lineno].find('bypass_pyflakes') >= 0:
return
self.messages.append(messageClass(self.filename, *args, **kwargs))
# monkey patch checker to support bypass
Checker.report = report_with_bypass
pyflakes.main()
If you save this as bypass_pyflakes.py
, then you can invoke it as python bypass_pyflakes.py myfile.py
.
http://chase-seibert.github.com/blog/2013/01/11/bypass_pyflakes.html
You can also import with __import__
. It's not pythonic, but pyflakes does not warn you anymore. See documentation for __import__
.
try:
import json
except ImportError:
__import__('django.utils', globals(), locals(), ['json'], -1)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With