Acquit
Provably skip unaffected pytest tests on every pull request. Static analysis, fail-closed, with evidence for every skip.
Status: alpha. The engine works: on real pull requests acquit makes selective decisions, and every skip ships with a machine-checkable witness that is re-verified by replay before pytest honors it. Every failure mode still converges on "run everything". Not yet on the GitHub Marketplace, so expect rough edges and no version pinning.
What it does
Acquit builds a dependency graph of your repository from import statements alone (it never executes your code), then works out which test files a pull request cannot possibly affect. Those tests are skipped, and every skip comes with a machine-checkable witness: the test's import closure and proof that it does not intersect the changed files.
Anything Acquit cannot reason about (dynamic imports, changed conftest files, dependency bumps, data files, and a documented list of other triggers) makes it fall back to running the full suite. It can only be wrong in the safe direction.
Try it on a PR
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: rajeev-chaurasia/acquit@main
with:
mode: report
Report mode never skips a test: the action analyzes the diff, verifies the evidence with a replay, posts a sticky PR comment explaining the decision, and sets outputs. Switch to mode: enforce once you trust what the comments say, and the pytest plugin will skip the provably unaffected files. Version pinning arrives with the first release; until then @main is the way in.
Design principles
- Never execute user code during analysis
- Fail closed: every error path converges on "run all tests"
- Deterministic: same tree and diff produce byte-identical reports
- Explainable: every decision names the rule or the graph path behind it
License
Apache-2.0
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file acquit-0.0.1.tar.gz.
File metadata
- Download URL: acquit-0.0.1.tar.gz
- Upload date:
- Size: 229.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3bbbedddbb1fcfb664c7ce75ca4f9e2a3114120db188fb6be625413eba0a528
|
|
| MD5 |
66d0d50f2dd1b1360d7b11f178076175
|
|
| BLAKE2b-256 |
f8fe094a5a8c0a9266d0469bee860f141cd0aa1aef9d6fbbb0b0ff31ca7fffef
|
Provenance
The following attestation bundles were made for acquit-0.0.1.tar.gz:
Publisher:
release.yml on rajeev-chaurasia/acquit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
acquit-0.0.1.tar.gz -
Subject digest:
d3bbbedddbb1fcfb664c7ce75ca4f9e2a3114120db188fb6be625413eba0a528 - Sigstore transparency entry: 2364347989
- Sigstore integration time:
-
Permalink:
rajeev-chaurasia/acquit@388d8cf36cd142265de557ca1ac558cde1fe786f -
Branch / Tag:
refs/tags/v0.0.1 - Owner: https://github.com/rajeev-chaurasia
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@388d8cf36cd142265de557ca1ac558cde1fe786f -
Trigger Event:
release
-
Statement type:
File details
Details for the file acquit-0.0.1-py3-none-any.whl.
File metadata
- Download URL: acquit-0.0.1-py3-none-any.whl
- Upload date:
- Size: 82.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b085055d993a9035a9edf661c1cfb3ddd46d831bbcba6b80e5874632936480b
|
|
| MD5 |
8dcf0f9558bb6033f79e7f2186fbdaa5
|
|
| BLAKE2b-256 |
1c4bae6d0f7aa9b8db6ece0edaa9538f11806c9e5f55a0ac5058564503f2ae4e
|
Provenance
The following attestation bundles were made for acquit-0.0.1-py3-none-any.whl:
Publisher:
release.yml on rajeev-chaurasia/acquit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
acquit-0.0.1-py3-none-any.whl -
Subject digest:
4b085055d993a9035a9edf661c1cfb3ddd46d831bbcba6b80e5874632936480b - Sigstore transparency entry: 2364348078
- Sigstore integration time:
-
Permalink:
rajeev-chaurasia/acquit@388d8cf36cd142265de557ca1ac558cde1fe786f -
Branch / Tag:
refs/tags/v0.0.1 - Owner: https://github.com/rajeev-chaurasia
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@388d8cf36cd142265de557ca1ac558cde1fe786f -
Trigger Event:
release
-
Statement type: