Skip to main content

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

Reason this release was yanked:

issue with code

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


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.

See feature overviews and trade-offs in the Introduction.


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

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-4.3.0.tar.gz (64.8 kB view details)

Uploaded Source

Built Distribution

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

bumpwright-4.3.0-py3-none-any.whl (50.0 kB view details)

Uploaded Python 3

File details

Details for the file bumpwright-4.3.0.tar.gz.

File metadata

  • Download URL: bumpwright-4.3.0.tar.gz
  • Upload date:
  • Size: 64.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for bumpwright-4.3.0.tar.gz
Algorithm Hash digest
SHA256 ca2de1a57caf6e30e7d8bc3101eb5626a03df79d804ad9389e9b0015c99bdf81
MD5 930fe15f31c717d07a49ee050b1d5ff0
BLAKE2b-256 3475a16ea60a469d362100dc02749dee39968ab6a579c1113801d19e9e85d362

See more details on using hashes here.

Provenance

The following attestation bundles were made for bumpwright-4.3.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-4.3.0-py3-none-any.whl.

File metadata

  • Download URL: bumpwright-4.3.0-py3-none-any.whl
  • Upload date:
  • Size: 50.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for bumpwright-4.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 754d99a90a6001cbceb163db9bba36087a27f735c0d29d73d751353ac6217664
MD5 08c5200964581f596a0a20f6773449e9
BLAKE2b-256 6bbf4df3e8de226c62e5906de1d014be32dd845dcdda778a2ce65255b72bbdb9

See more details on using hashes here.

Provenance

The following attestation bundles were made for bumpwright-4.3.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