Skip to main content

pytest-flakes

py.test plugin for efficiently checking python source with pyflakes.

Usage

install via:

pip install pytest-flakes

if you then type:

py.test --flakes

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 pytest.ini 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

Notes

The repository of this plugin is at https://github.com/asmeurer/pytest-flakes

For more info on py.test see http://pytest.org

The code is partially based on Ronny Pfannschmidt’s pytest-codecheckers plugin and Holger Krekel’s pytest-pep8.

Changes

4.0.5 - 2021-12-02

  • Further fixes for deprecations in the upcoming pytest 7.0. [nicoddemus]

4.0.4 - 2021-10-26

  • Fix pytest-flakes for deprecations in the upcoming pytest 7.0. [bluetech]

  • Fix the pytest-flakes test suite in Python 3.10. [bluetech]

  • Replace Travis CI with GitHub Actions. [bluetech]

4.0.3 - 2020-11-27

  • Future proof some code against future versions of pytest. [RonnyPfannschmidt]

4.0.2 - 2020-09-18

  • Fix calling pytest –flakes directly on an __init__.py file. [akeeman]

4.0.1 - 2020-07-28

  • Maintenance of pytest-flakes has moved from fschulze to asmeurer. The repo for pytest-flakes is now at https://github.com/asmeurer/pytest-flakes/

  • Fix test failures. [asmeurer]

  • Fix deprecation warnings from pytest. [asmeurer]

  • Fix invalid escape sequences. [akeeman]

4.0.0 - 2018-08-01

  • Require pytest >= 2.8.0 and remove pytest-cache requirement. Cache is included in pytest since that version. [smarlowucf (Sean Marlow)]

3.0.2 - 2018-05-16

  • Fix typo in name of flakes marker. [fschulze]

3.0.1 - 2018-05-16

  • Always register flakes marker, not only when the --flakes option is used. [fschulze]

3.0.0 - 2018-05-16

  • Drop support for Python 3.3. It still works so far, but isn’t tested anymore. [fschulze]

  • Add flakes marker required since pytest 3.1. [fschulze]

  • Use pyflakes.api.isPythonFile to detect Python files. This might test more files than before and thus could cause previously uncaught failures. [asmeurer (Aaron Meurer)]

2.0.0 - 2017-05-12

  • Dropped support/testing for Python 2.5, 2.6, 3.2. [fschulze]

  • Added testing for Python 3.6. [fschulze]

  • Fixed some packaging and metadata errors. [fladi (Michael Fladischer), fschulze]

1.0.1 - 2015-09-17

  • Compatibility with upcoming pytest. [RonnyPfannschmidt (Ronny Pfannschmidt)]

1.0.0 - 2015-05-01

  • Fix issue #6 - support PEP263 for source file encoding. [The-Compiler (Florian Bruhin), fschulze]

  • 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)]

Release files for pytest-flakes 4.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pytest-flakes 4.0.5
File Size Uploaded
pytest-flakes-4.0.5.tar.gz 7.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pytest-flakes 4.0.5
File Interpreter ABI Platform
pytest_flakes-4.0.5-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 14.1 kB

Release files / pytest-flakes-4.0.5.tar.gz

Download URL pytest-flakes-4.0.5.tar.gz
Size 7.3 kB
Tags Source
SHA-256 checksum
How to use checksums
953134e97215ae31f6879fbd7368c18d43f709dc2fab5b7777db2bb2bac3a924
BLAKE2b-256 checksum
How to use checksums
b58c7d4bb3475c373b16ece7a94bd0e33ec045076c9189ed4022299679885179
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.1 requests/2.26.0 setuptools/58.5.3 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.6

Release files / pytest_flakes-4.0.5-py2.py3-none-any.whl

Download URL pytest_flakes-4.0.5-py2.py3-none-any.whl
Size 6.8 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
d0e8602d882744fc6169247b62a51203c5a3d8f160892ff3b82f5b9c1e4bb675
BLAKE2b-256 checksum
How to use checksums
b5f83e4f988403081d526c4fa5d0256f84ac03a60744e4f9d839526ab8cb7bef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.1 requests/2.26.0 setuptools/58.5.3 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.6

Release history Release notifications | RSS feed

This release

4.0.5 This release

2 release files

4.0.4

2 release files

4.0.3

2 release files

4.0.2

1 release file

4.0.1

2 release files

4.0.0

2 release files

3.0.2

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.0.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.2

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page