panda-simple-releases
A lightweight Python CLI tool to simplify the release process and changelog management.
Tools like Semantic Release are fantastic, and I highly recommend exploring them — they are the right choice for many projects. panda-simple-releases is partially inspired by them but deliberately offers a much smaller feature set. It serves as a minimal, file-based alternative for simpler Python projects where full-fledged release frameworks feel too heavy.
How it Works
- Record Changes: For every change, you create a text file in the
.changes/directory detailing the change type, title, and description (see Change File Format). CI/CD pipelines can enforce this via thecheckcommand. - Release: When you are ready to release, the tool reads and deletes these files, automatically bumps the project version, and adds the new release entry to
CHANGELOG.md.
Note: This tool assumes Semantic Versioning and relies on hatchling with the hatch-semver plugin to manage the project version.
Usage
The recommended way to run this application is via uvx:
uvx panda-simple-releases --help
Commands
-
panda-simple-releases checkValidates that
.changes/contains at least one correctly formatted change file.Tip: Use
--compare-to-branch <branch_name>in PR pipelines. With this flag, the tool verifies that a new change file was added and validates only the files newly added to your current branch. -
panda-simple-releases releaseValidates change files, determines the appropriate version bump (major, minor, or patch), updates the version, removes the change files, and updates
CHANGELOG.md. -
panda-simple-releases show-versionOutputs the current project version. Useful for generating release commit messages or tags.
Change File Format
Change files follow a strict format structurally similar to Conventional Commits:
<change_type>[(<scope>)]: <title>
[optional multi-line description]
Rules
- Title (Line 1): Must start with a valid
<change_type>, an optional(<scope>), a colon (:), a single space, and a brief<title>. - Blank Line (Line 2): If providing a description, the second line must be completely blank.
- Description (Line 3+): Optional, multi-line details about the change. Leading and trailing empty lines are automatically stripped.
Valid Change Types
The <change_type> determines how the version will be bumped:
- Major (X.0.0) - Breaking Changes:
breaking,major - Minor (0.X.0) - Features:
feat,feature,minor - Patch (0.0.X) - Fixes & Maintenance:
fix,bugfix,hotfix,patch,perf,performance,chore - Skip (No bump):
skip,chore-skip
(Note: chore and chore-skip are considered development-only changes).
Example
feat(api): Add new authentication endpoint
This feature adds OAuth2 support to the core API.
It includes multiple lines in the description.
Additional documentation
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 panda_simple_releases-1.0.0.tar.gz.
File metadata
- Download URL: panda_simple_releases-1.0.0.tar.gz
- Upload date:
- Size: 98.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
badb73b3c8b5db91e8158f9e99f2a0318ffa1ad6c4c35bd24ff049ea8299f7ad
|
|
| MD5 |
2f5c8ffcca3ddba58a6e9c41d8398334
|
|
| BLAKE2b-256 |
70a3d9287d8df5d84bb58d6578c08bfd512e76da21fc659e8f534300a13cca59
|
Provenance
The following attestation bundles were made for panda_simple_releases-1.0.0.tar.gz:
Publisher:
release.yml on KRunchPL/panda-simple-releases
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
panda_simple_releases-1.0.0.tar.gz -
Subject digest:
badb73b3c8b5db91e8158f9e99f2a0318ffa1ad6c4c35bd24ff049ea8299f7ad - Sigstore transparency entry: 2742337357
- Sigstore integration time:
-
Permalink:
KRunchPL/panda-simple-releases@bce47891ab534cba54b76051b75550901ae08195 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/KRunchPL
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@bce47891ab534cba54b76051b75550901ae08195 -
Trigger Event:
release
-
Statement type:
File details
Details for the file panda_simple_releases-1.0.0-py3-none-any.whl.
File metadata
- Download URL: panda_simple_releases-1.0.0-py3-none-any.whl
- Upload date:
- Size: 20.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
038d88d1348895decf0662d1a20da941072f7d31ebe9dc3950a27b43635830cd
|
|
| MD5 |
ba90ece65a2f16fceff0b24efc5cec9d
|
|
| BLAKE2b-256 |
26ff74092e5459f41d40dd3877464a29f765e67d1f0fa3530e6cb0a3b35378e2
|
Provenance
The following attestation bundles were made for panda_simple_releases-1.0.0-py3-none-any.whl:
Publisher:
release.yml on KRunchPL/panda-simple-releases
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
panda_simple_releases-1.0.0-py3-none-any.whl -
Subject digest:
038d88d1348895decf0662d1a20da941072f7d31ebe9dc3950a27b43635830cd - Sigstore transparency entry: 2742337373
- Sigstore integration time:
-
Permalink:
KRunchPL/panda-simple-releases@bce47891ab534cba54b76051b75550901ae08195 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/KRunchPL
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@bce47891ab534cba54b76051b75550901ae08195 -
Trigger Event:
release
-
Statement type: