Static public-API diff + heuristics to suggest semantic version bumps.
Reason this release was yanked:
issue
Project description
bumpwright
Bumpwright compares two Git refs, inspects your public API, and recommends (or applies) the correct semantic version bump. It can also update version strings in your project and render changelog entries from your commits.
Docs: https://lewis-morris.github.io/bumpwright Usage recipes: https://lewis-morris.github.io/bumpwright/usage-patterns.html
Why Bumpwright?
- Code-first accuracy – infers breaking/minor/patch from exported symbols, not commit messages.
- Optional analysers – enable checks for CLI, web routes, migrations, OpenAPI/GraphQL, and more.
- CI-friendly – print a decision (
text|md|json) or apply + tag releases automatically.
Get started in the Introduction or dive into the Quickstart.
Install
pip install bumpwright # Python 3.11+
Bumpwright now uses Python's built-in tomllib, removing the need for the
external tomli dependency.
Full details: Installation
TL;DR (90 seconds)
# 1) Create a baseline release commit once
bumpwright init
# 2) Ask Bumpwright what the next version should be
bumpwright decide
# 3) Apply it, update files, commit and tag
bumpwright bump --commit --tag
What the decision means and examples: Quickstart • Command flags: Usage → bump
| Command | Purpose |
|---|---|
bumpwright init |
Create a baseline release commit. |
bumpwright bump |
Determine and apply the next version. |
bumpwright history |
View past releases in text, Markdown, or JSON and roll back a tag. |
Configuration (minimal)
Bumpwright reads bumpwright.toml (you can change with --config). Defaults are sensible; start small and opt-in extras as needed.
# bumpwright.toml
[project]
public_roots = ["."]
private_prefixes = ["_"] # names starting with "_" are ignored as private
[analysers]
cli = true # set true to enable
grpc = false
web_routes = false
migrations = false
openapi = false
graphql = false
[changelog]
# path = "CHANGELOG.md" # optional default target for --changelog
repo_url = "https://github.com/me/project" # link commits and compares
[version]
scheme = "semver" # "semver" | "calver"
# paths / ignore have robust defaults
All options and defaults: Configuration • Versioning schemes: Versioning
Output & Changelog
- Choose output with
--format text|md|jsonfor human/CI consumption. - Generate release notes with a Jinja2 template via
--changelog(and--repo-urlor[changelog].repo_urlfor compare/commit links).
Template context includes: version, date, release_datetime_iso, commits[sha,subject,link], previous_tag, compare_url, contributors[name,link], breaking_changes, repo_url.
Learn more & ready-to-copy templates:
Analysers (opt-in)
Enable what you need in [analysers] or per-run with --enable-analyser/--disable-analyser.
- Python API (default) – respects
__all__; otherwise public = names not starting with_. - CLI – detects changes to argparse/Click commands.
- Web routes – Flask/FastAPI route changes.
- Migrations – Alembic schema impacts.
- OpenAPI – spec diffs.
- GraphQL – schema diffs.
Overview & per-analyser docs: Analysers
GitHub Actions (CI)
Common workflows are prebuilt:
- Auto-bump on push (commit + tag + append changelog)
- PR check (report decision only)
- Manual release (on dispatch)
Copy/paste from: CI/CD (GitHub Actions)
Contributing & Roadmap
Issues and PRs welcome. See Contributing and planned work in the Roadmap.
License: MIT
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
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 bumpwright-0.1.0.tar.gz.
File metadata
- Download URL: bumpwright-0.1.0.tar.gz
- Upload date:
- Size: 82.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a8a5b5cd287a04659aae159b7733291fc6c5f7bdc94bca1f6a05173161831886
|
|
| MD5 |
c52991e838ba3e4124dfe9e3f8ad4162
|
|
| BLAKE2b-256 |
18223d4d89056b6e37154a0fdfec2caed9a1547e0f128a2cbb84baa3d11297a0
|
Provenance
The following attestation bundles were made for bumpwright-0.1.0.tar.gz:
Publisher:
python-publish.yml on lewis-morris/bumpwright
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
bumpwright-0.1.0.tar.gz -
Subject digest:
a8a5b5cd287a04659aae159b7733291fc6c5f7bdc94bca1f6a05173161831886 - Sigstore transparency entry: 404907501
- Sigstore integration time:
-
Permalink:
lewis-morris/bumpwright@471e26d5ae40ec362f1d1b27e3f22e36373364c8 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/lewis-morris
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@471e26d5ae40ec362f1d1b27e3f22e36373364c8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file bumpwright-0.1.0-py3-none-any.whl.
File metadata
- Download URL: bumpwright-0.1.0-py3-none-any.whl
- Upload date:
- Size: 62.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec4e2f0fa61eb5643eee66d7e0d1e7caa585784ef2dc422cc84b9f95234d53fe
|
|
| MD5 |
2cf100a681c16865bdbc6fe3e7d9c1c9
|
|
| BLAKE2b-256 |
b280da15fb30e76648ac366f577d2d4d41434c8c8327c3ee57b305a0a2238637
|
Provenance
The following attestation bundles were made for bumpwright-0.1.0-py3-none-any.whl:
Publisher:
python-publish.yml on lewis-morris/bumpwright
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
bumpwright-0.1.0-py3-none-any.whl -
Subject digest:
ec4e2f0fa61eb5643eee66d7e0d1e7caa585784ef2dc422cc84b9f95234d53fe - Sigstore transparency entry: 404907506
- Sigstore integration time:
-
Permalink:
lewis-morris/bumpwright@471e26d5ae40ec362f1d1b27e3f22e36373364c8 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/lewis-morris
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@471e26d5ae40ec362f1d1b27e3f22e36373364c8 -
Trigger Event:
push
-
Statement type: