pytest plugin to check source code with pyflakes
py.test plugin for efficiently checking python source with pyflakes.
pip install pytest-flakes
if you then type:
every file ending in .py will be discovered and run through pyflakes, starting from the command line arguments.
Simple usage example
Consider you have this code:
# content of module.py import os from os.path import * def some_function(): pass
Running it with pytest-flakes installed shows two issues:
$ py.test -q --flakes F ================================= FAILURES ================================= ______________________________ pyflakes-check ______________________________ /tmp/doc-exec-685/module.py:2: UnusedImport 'os' imported but unused /tmp/doc-exec-685/module.py:3: ImportStarUsed 'from os.path import *' used; unable to detect undefined names 1 failed in 0.00 seconds
These are only two of the many issues that pytest-flakes can find.
Configuring pyflakes options per project and file
You may configure pyflakes-checking options for your project by adding an flakes-ignore entry to your setup.cfg or setup.cfg file like this:
# content of setup.cfg [pytest] flakes-ignore = ImportStarUsed
This would globally prevent complaints about star imports. Rerunning with the above example will now look better:
$ py.test -q --flakes F ================================= FAILURES ================================= _________________ pyflakes-check(ignoring ImportStarUsed) __________________ /tmp/doc-exec-685/module.py:2: UnusedImport 'os' imported but unused 1 failed in 0.00 seconds
But of course we still would want to delete the import os line to have a clean pass.
If you have some files where you want to specifically ignore some errors or warnings you can start a flakes-ignore line with a glob-pattern and a space-separated list of codes:
# content of setup.cfg [pytest] flakes-ignore = *.py UnusedImport doc/conf.py ALL
Ignoring certain lines in files
You can ignore errors per line by appending special comments to them like this:
import sys # noqa app # pragma: no flakes
Running pyflakes checks and no other tests
You can restrict your test run to only perform “flakes” tests and not any other tests by typing:
py.test --flakes -m flakes
This will only run tests that are marked with the “flakes” keyword which is added for the flakes test items added by this plugin.
If you are using pytest < 2.4, then use the following invocation to the same effect:
py.test --flakes -k flakes
1.0 - Unreleased
- Clarified license to be MIT like pytest-pep8 from which this is derived. [fschulze]
0.2 - 2013-02-11
- Adapt to pytest-2.4.2 using add_marker() API. [fschulze, hpk42 (Holger Krekel)]
- Allow errors to be skipped per line by appending # noqa or # pragma: no flakes [fschulze, silviot (Silvio Tomatis)]
- Python 3.x compatibility. [fschulze, encukou (Petr Viktorin)]
0.1 - 2013-02-04
- Initial release. [fschulze (Florian Schulze)]