Skip to main content

Changes

build

Lightweight and (hopefully) unopinionated tool for using Conventional Commits and Semantic Versioning with Git.

Overview

Many of the Semantic Versioning tools out there force very specific workflows that I found hard to adopt in my own projects. Changes attempts to provide a collection of tools that fit into your own project lifecycle by providing a collection of commands that can be assembled however you need.

Changes differs from many other solutions by using tags to mark commits in your repository as released. This allows releases to be made without modifying the source or making additional commits.

Installation

Changes is available via PyPI.

Install it using your Python package manager of choice. For example, using uv:

uv tool install changes-semver

Usage

Here are a few quick commands you can try to get you started—run these from within a Git repository with commit messages conforming to Conventional Commits:

  • Get the current version number:

    changes version --released
    
  • Get the next version number (accounting for changes since the last release tag):

    changes version
    
  • Get the latest release notes:

    changes notes --released
    
  • Get the released notes for the next version:

    changes notes
    
  • List the full history:

    changes notes --all	
    
  • Make a release:

    changes release
    

    (Tags the current sha with the new version if there are unreleased changes).

Find out more details using the --help command:

changes --help

Or see the details of specific sub-commands by passing the --help flag directly to those commands:

changes release --help

Alternative Histories

Sometimes you might need to provide your own list of changes for specific releases—this can be helpful if you forgot to adhere to Conventional Commits or, perhaps, you want to provide a custom list of changes for your initial release. Changes supports this, allowing you to replace the list of changes for any release specified a simple YAML file:

  1. Create a YAML file containing the releases you want to change. For example,

    "1.0.0":
    - "feat: Initial release"
    
  2. Pass this alternative history file to any changes command:

    changes notes --history history.yaml
    

[!NOTE]

Changes replaces all the changes in the named releases with those listed in the YAML file; you will need to manually include any change you want listed for releases you override.

Development

Setup

git clone git@github.com:jbmorley/changes.git
cd changes
pipenv install

Tests

Run tests locally using the test.sh script:

./scripts/test.sh

You can run a specific test by specifying the test class on the command line:

./scripts/test.sh test_cli.CLITestCase.test_version_multiple_changes_yield_single_increment

Metadata

Release files for changes-semver 6.0.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for changes-semver 6.0.8
File Size Uploaded Provenance
changes_semver-6.0.8.tar.gz 21.3 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for changes-semver 6.0.8
File Interpreter ABI Platform
changes_semver-6.0.8-py3-none-any.whl Python 3 none any Details

Total release size: 35.9 kB

Release files / changes_semver-6.0.8.tar.gz

Download URL changes_semver-6.0.8.tar.gz
Size 21.3 kB
Tags Source
SHA-256 checksum
How to use checksums
55f5a44b4e98cc57bd0a65bbbf693bff759df2216ccef80b6f0d9b2f771259b2
BLAKE2b-256 checksum
How to use checksums
beb920205a3543738033ab20141655e7fad636225e37f01ea6d552e6586e87c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Release files / changes_semver-6.0.8-py3-none-any.whl

Download URL changes_semver-6.0.8-py3-none-any.whl
Size 14.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5bbd0468a01c7e87753457fde75fe7e7844fe87e790c417b63f1172fafb2bc01
BLAKE2b-256 checksum
How to use checksums
45b4a0d6c2bfbef0df5ea26b14ab46544b4ca331d38e00a7e7bc5d5c292e43ce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Security for changes-semver 6.0.8

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for changes_semver-6.0.8.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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