Every release uses ./scripts/release.sh. Do not bump versions, tag, or create GitHub Releases manually.
- Install GitHub CLI (
gh) and authenticate. - Ensure PyPI trusted publishing is configured for this repo (
publish.ymluses thepypiGitHub environment).
-
Add user-facing notes under
## [Unreleased]inCHANGELOG.md. -
Prepare the release PR:
./scripts/release.sh prepare patch # or minor | major | X.Y.ZThis bumps the version in
pyproject.tomlandhotdata_materialized/__init__.py, rolls the changelog, and opens the PR. -
Merge the PR after CI passes.
-
Publish from a clean
maincheckout:git checkout main git pull ./scripts/release.sh publish
Pushing a vX.Y.Z tag triggers two workflows:
| Workflow | Purpose |
|---|---|
publish.yml |
Build wheel/sdist, verify tag↔version, publish to PyPI via trusted publishing |
release.yml |
Create the GitHub Release with notes from CHANGELOG.md |
If PyPI publish succeeded but the GitHub Release workflow failed, rerun
release.yml from the Actions tab via workflow_dispatch with the existing
tag — no retagging needed.