Skip to main content

pyproject-flake8 (pflake8)

A monkey patching wrapper to connect flake8 with pyproject.toml configuration.

Update concerning versioning:

pyproject-flake8 so far came without explicit pinning of a flake8 version. Since a recent update broke compatibility – not unexpectedly – the issue arose, how to handle incompatible versions of flake8 and pyproject-flake8. Since there are good reasons for and against version pinning, this project now tries to follow a mix of both: Release versions will follow and pin identical flake8 versions, alpha versions (specific to pyproject-flake8) will pin to the similar non-alpha version of flake8, or later. That way, users of pyproject-flake8 can decide, whether they want a fixed version known to work, or a minimum version, getting later versions, at the risk of future breakage.

Versions 0.0.1x are pyproject-flake8 internal versions and do not correspond to flake8. Furthermore, flake8 3.8.0 was chosen as the first flake8 version to mirror this way.

tl;dr:

# e.g., suggested installation / dependency ... depending on flake8==5.0.4

# for Python 3.8+
pip install pyproject-flake8==5.0.4

# for Python 3.6+
pip install pyproject-flake8==5.0.4.post1

Rationale

flake8 is one of the most popular Python linters, pyproject.toml has become the standard for Python project metadata.

More and more tools are able to utilize a shared pyproject.toml, alleviating the need for many individual configuration files cluttering a project repository.

Since excellent flake8 is not aimed to support pyproject.toml, this wrapper script tries to fix the situation.

Installation

From github

pip install .

From PyPI

pip install pyproject-flake8

Building packages

Use your favorite PEP517 compliant builder, e.g.:

# install first via: pip install build
python -m build
# packages will reside in dist/

Usage

Call pflake8 instead of flake8.

Configuration goes into the tool.flake8 section of pyproject.toml:

[tool.flake8]
max-line-length = 88
extend-ignore = ["E203"]
max-complexity = 10

See also

Two other projects aim to address the same problem:

Both seem to try to do a lot more than just getting pyproject.toml support. pyproject-flake8 tries to stay minimal while solving its task.

flake8-pyproject adds only pyproject.toml support, and does this as a Flake8 plugin, allowing the original flake8 command to work (rather than using pflake8).

Caveat

This script monkey-patches flake8 and the configparser library of Python, therefore loading it as a module may have unforeseen consequences. Alpha quality. Use at your own risk. It will likely break if either Python or flake8 restructure their code significantly. No guarantees for stability between versions.

License

Unlicense

Release files for pyproject-flake8 7.0.0

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

Source distribution (sdist)

Source distribution for pyproject-flake8 7.0.0
File Size Uploaded
pyproject_flake8-7.0.0.tar.gz 4.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyproject-flake8 7.0.0
File Interpreter ABI Platform
pyproject_flake8-7.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 10.1 kB

Release files / pyproject_flake8-7.0.0.tar.gz

Download URL pyproject_flake8-7.0.0.tar.gz
Size 4.6 kB
Tags Source
SHA-256 checksum
How to use checksums
5b953592336bc04d86e8942fdca1014256044a3445c8b6ca9467d08636749158
BLAKE2b-256 checksum
How to use checksums
51c3619735aa5097b41e2af1a7e067e8859dea59689386b00c2efb7a8b7dc401
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.2

Release files / pyproject_flake8-7.0.0-py3-none-any.whl

Download URL pyproject_flake8-7.0.0-py3-none-any.whl
Size 5.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
611e91b49916e6d0685f88423ad4baff490888278a258975403c0dee6eb6072e
BLAKE2b-256 checksum
How to use checksums
3a4934cb28f055739c442383cffe72f57d5eb924a9535ffc9c80edacff0f37f7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.2

Release history Release notifications | RSS feed

This release

7.0.0 This release

2 release files

6.1.0

2 release files

6.0.0

2 release files

5.0.4

2 release files

5.0.3

2 release files

5.0.2

2 release files

5.0.1

2 release files

5.0.0

2 release files

4.0.1

2 release files

4.0.0

2 release files

3.9.2

2 release files

3.9.1

2 release files

3.9.0

2 release files

3.8.4

2 release files

3.8.3

2 release files

3.8.2

2 release files

3.8.1

2 release files

3.8.0

2 release files

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