Skip to main content

Static public-API diff + heuristics to suggest semantic version bumps.

Reason this release was yanked:

issue

Project description

bumpwright

Coverage Version Python Versions License

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|json for human/CI consumption.
  • Generate release notes with a Jinja2 template via --changelog (and --repo-url or [changelog].repo_url for 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bumpwright-0.1.0.tar.gz (82.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bumpwright-0.1.0-py3-none-any.whl (62.1 kB view details)

Uploaded Python 3

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

Hashes for bumpwright-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a8a5b5cd287a04659aae159b7733291fc6c5f7bdc94bca1f6a05173161831886
MD5 c52991e838ba3e4124dfe9e3f8ad4162
BLAKE2b-256 18223d4d89056b6e37154a0fdfec2caed9a1547e0f128a2cbb84baa3d11297a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for bumpwright-0.1.0.tar.gz:

Publisher: python-publish.yml on lewis-morris/bumpwright

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for bumpwright-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ec4e2f0fa61eb5643eee66d7e0d1e7caa585784ef2dc422cc84b9f95234d53fe
MD5 2cf100a681c16865bdbc6fe3e7d9c1c9
BLAKE2b-256 b280da15fb30e76648ac366f577d2d4d41434c8c8327c3ee57b305a0a2238637

See more details on using hashes here.

Provenance

The following attestation bundles were made for bumpwright-0.1.0-py3-none-any.whl:

Publisher: python-publish.yml on lewis-morris/bumpwright

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page