Skip to main content

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 through pre-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.

Release files for flake8-staged-diff 0.3.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 flake8-staged-diff 0.3.0
File Size Uploaded
flake8-staged-diff-0.3.0.tar.gz 4.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for flake8-staged-diff 0.3.0
File Interpreter ABI Platform
flake8_staged_diff-0.3.0-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 8.9 kB

Release files / flake8-staged-diff-0.3.0.tar.gz

Download URL flake8-staged-diff-0.3.0.tar.gz
Size 4.2 kB
Tags Source
SHA-256 checksum
How to use checksums
035dc628315d06bb61438149f600f7b380afae46ddc85fa3b6db6e3896a35d71
BLAKE2b-256 checksum
How to use checksums
4d5fd99b1a74d4d8ef8bb1e5a7662eb00173b8436c1b6236e987fd2a84741c28
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.4

Release files / flake8_staged_diff-0.3.0-py2.py3-none-any.whl

Download URL flake8_staged_diff-0.3.0-py2.py3-none-any.whl
Size 4.7 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
90f58e400f74ddfcd73a1f4f037ffae0e7516d922b03334eac8ac90e2077bbc4
BLAKE2b-256 checksum
How to use checksums
cb6865c1e9210e51cdb4a87766b8eda943a08e4771a65149ea17447e4f38ea1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.4

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.1.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