Releasing randaba¶
The first public version is prepared as 0.1.0. The package is not yet
published on PyPI. Both the distribution and Python import are randaba.
The repository and documentation site
are public. The release audit records the completed checks.
First public release¶
The release-preparation branch is merged and the public launch is complete. Confirm the release commit has passing CI before tagging.
Run
make ci-dockerandmake ci-docker PYTHON_VERSION=3.14on the release commit. The checks build a source distribution, build its wheel, validate metadata, and run tests against the installed wheel in an isolated environment.Pages is configured to use GitHub Actions. Confirm the Docs workflow deploys successfully from
main.The GitHub Actions environment
pypiexists. In PyPI, add a pending trusted publisher with these exact values:Field
Value
PyPI project
randabaGitHub owner
finite-sampleRepository
randabaWorkflow
release.ymlEnvironment
pypiFollow the PyPI pending-publisher instructions. Publishing uses OIDC; no PyPI API key is needed.
Dispatch the Release workflow on
mainwithpublishleft false for a build rehearsal. A branch run cannot publish to PyPI.Move the changelog’s Unreleased entries into a dated
0.1.0section and leave an empty Unreleased section. ConfirmCITATION.cff,pyproject.toml, anduv.lockagree on the version. Commit and merge these release notes, and wait for CI to pass on that commit.Tag that commit
v0.1.0and push the tag. A matching tag push publishes to PyPI and creates a GitHub release. Check both jobs: the GitHub release can exist even if the separate PyPI publishing job fails.Verify
pip install randabain a clean environment, then make that the primary README installation command and remove the pre-release wording from this guide. Add the standard PyPI badge at that point so it reports the published version automatically:[](https://pypi.org/project/randaba/)
Later releases¶
Run uv version X.Y.Z, update CITATION.cff and the changelog, and run the
same local and CI checks. Push vX.Y.Z only after the release commit passes.
The release workflow rejects tags whose version differs from the built wheel.
If publication needs retrying, dispatch Release from the existing tag with
publish enabled. Already uploaded distributions are skipped. See
PyPI’s trusted-publishing documentation
for the publishing mechanism.