pychangeset
A tool for automating version bumps, changelog generation and release PRs in Python projects, inspired by Changesets.
Installation
# Use with uvx (recommended)
uvx changeset
# Or install from PyPI
pip install pychangeset
Quick Start
0. Initialize
uvx changeset
This will:
- Run
changeset init, creating a .changeset/ directory in your project - Prompt the user to
adda changeset, which will:- Detect which packages have changes
- Ask what type of change for each (major/minor/patch)
- Prompt for a description
- Create a changeset file in
.changeset/
1. Track .changset/
git add .changeset/
git commit -m "Add changeset"
git push
2. Automated Release Process
To get the most out of pychangeset, add these workflows to your repository:
.github/workflows/changesets.yml
When you merge to your main branch, the changesets workflow will create or update a Release PR with:
- Updated CHANGELOG.md files
- Bumped version numbers
- Consolidated PR description
.github/workflows/release.yml
When the Release PR is merged, the release workflow:
- Publishes packages to PyPI
- Creates git tags
- Creates GitHub releases
Commands
changeset init
Initialize changesets in your project.
changeset add / changeset
Create a new changeset interactively.
Options:
--all: Include all packages without prompting
changeset version
Process changesets and bump versions.
Options:
--dry-run: Preview changes without applying them--skip-changelog: Skip changelog generation
changeset changelog
Generate changelogs from changesets.
Options:
--dry-run: Preview changelog without writing files--output-pr-description <file>: Write PR description to file
changeset check-changeset
Check if changesets exist for the current branch (useful for CI).
Options:
--skip-ci: Skip check in CI environment
Changelog Format
Changelogs are generated with PR and commit metadata:
# package-name
## 1.2.0
### Minor Changes
- [#123](link-to-pr) [`abc123`](link-to-commit) Thanks @username! - Description of change
### Patch Changes
- [#124](link-to-pr) [`def456`](link-to-commit) Thanks @username! - Bug fix description
Development
# Clone the repository
git clone https://github.com/the-roaring/pychangeset.git
cd pychangeset
# Install with uv
uv sync
# Run tests
uv run pytest
# Run the tool locally
uv run changeset
License
MIT
Metadata
Release files for changeset 0.2.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| changeset-0.2.8.tar.gz | 37.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| changeset-0.2.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 57.8 kB
Release files / changeset-0.2.8.tar.gz
| Download URL | changeset-0.2.8.tar.gz |
|---|---|
| Size | 37.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
99ed1d5f56154101d162becea36c64132009436ea37183ebbd9daca30ac24ad0
|
|
BLAKE2b-256 checksum How to use checksums |
e4320c8ce1debbc2b434bc56d128c43d1edd9ecd78ca2135808b2877c5399bac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.7.21
|
Release files / changeset-0.2.8-py3-none-any.whl
| Download URL | changeset-0.2.8-py3-none-any.whl |
|---|---|
| Size | 20.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
08d7cfccd2850c9856e1405290bf3faf993b76dd301c5f22fc4ab04ea682147a
|
|
BLAKE2b-256 checksum How to use checksums |
3c6229c74fb5333aa583291f4a40beda056b0f76afb5ed63bf286af301207090
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.7.21
|