flake8 wrapper to run only on modified/staged code
Project description
flake8-staged-diff
Run flake8 but report the findings only on staged files (identified with git diff --staged
)
This tool is primarily meant to be integrated through pre-commit but it also offers a CLI.
How it works?
This tool runs first git diff -U0 --staged --
and identify the files and lines that were modified,
it then runs flake8 on the entire files and simply filters out all the findings that are not coming
from the modified code.
If no files is staged in git, it will return immediately
Pre-commit integration
An example .pre-commit-config.yaml
:
repos:
- repo: https://github.com/bagerard/flake8-staged-diff
rev: '' # Use the sha / tag you want to point at
hooks:
- id: flake8-staged-diff
NOTE: This will only affect local usage of pre-commit, typically through
git commit
. When it runs for instance in a Github pipeline throughpre-commit run -a
, there will be no staged files and the tool will simply pass.
CLI Usage
Interface is the same as flake8, e.g.
flake8-staged-diff file1.py file2.py --select=E501
Rationale
This tool allows to introduce some flake8 rules in large/legacy codebases only on the code that is updated or inserted.
We use this at work for enforcing type annotations on modified code using the following config
- repo: https://github.com/bagerard/flake8-staged-diff
rev: '' # Use the sha / tag you want to point at
hooks:
- id: flake8-staged-diff
args:
- "--select=AN"
additional_dependencies:
- flake8-annotations
Consideration
Use this consciously, not every flake8's rule is a good candidate for this tool, in fact sometimes a modified line can introduce errors in other part of the file but since those part of the file aren't in the diff, they wouldn't appear through this tool. Make sure to review pre-commit / Flake8's maintainer comment made here.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file flake8-staged-diff-0.3.0.tar.gz
.
File metadata
- Download URL: flake8-staged-diff-0.3.0.tar.gz
- Upload date:
- Size: 4.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 035dc628315d06bb61438149f600f7b380afae46ddc85fa3b6db6e3896a35d71 |
|
MD5 | 70c82e869f8e171c883363b832413771 |
|
BLAKE2b-256 | 4d5fd99b1a74d4d8ef8bb1e5a7662eb00173b8436c1b6236e987fd2a84741c28 |
File details
Details for the file flake8_staged_diff-0.3.0-py2.py3-none-any.whl
.
File metadata
- Download URL: flake8_staged_diff-0.3.0-py2.py3-none-any.whl
- Upload date:
- Size: 4.7 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 90f58e400f74ddfcd73a1f4f037ffae0e7516d922b03334eac8ac90e2077bbc4 |
|
MD5 | 40293f224bf730d3ead5f00edefdf231 |
|
BLAKE2b-256 | cb6865c1e9210e51cdb4a87766b8eda943a08e4771a65149ea17447e4f38ea1e |