Releasing
CALLIOPE uses CalVer versioning (YY.0M.0D[.patch]) and is published to PyPI automatically when a GitHub release is tagged.
Release checklist
-
Regenerate requirements files
python tools/generate_requirements_txt.py pip-compile -o requirements_full.txt pyproject.toml -
Bump the version
bump-my-version bump release # e.g. 25.05.04 → 26.05.02 # or bump-my-version bump patch # e.g. 26.05.02 → 26.05.02.1bump-my-versionupdatessrc/calliope/__init__.py,pyproject.toml, andCITATION.cffin one go. -
Commit and push the version bump and the regenerated requirements files. Open a PR if the change touches anything substantive.
-
Create a GitHub release:
- Go to Releases and click Draft a new release.
- Set the tag to the new version (e.g.
26.05.02) and targetmain. - Auto-generate release notes from merged PRs since the previous release; keep the title plain (no leading
v). - Publish.
-
PyPI upload is triggered automatically by
publish.yamlwhen the release is published. Verify the new version appears on PyPI within ~5 minutes. -
Update PROTEUS if the bump introduces an API change: PROTEUS pins
fwl-calliopein itspyproject.toml; bump the lower bound there and re-run the PROTEUS test suite.
Hotfixes
For an urgent fix on top of an already-released version, bump the patch component (bump-my-version bump patch) so the new release inherits the previous date string. This keeps the release timeline aligned with the calendar without losing the date prefix.
Yanking a release
If a release is broken, yank it on PyPI immediately to prevent new installs from picking it up, then publish a follow-up patch release with the fix. Do not delete the GitHub release; mark it pre-release so users can still trace the timeline.