# Release Process Releases are published by the GitHub Actions workflow in `.github/workflows/release.yml`. To publish to PyPI: 1. Ensure the release commit is on `main`. 2. Create and push a version tag that starts with `v`, for example `v0.1.0`. 3. The release workflow checks that the tag points to a commit reachable from `main`, builds a wheel, installs and tests it on the latest supported Python version, and uploads it to PyPI. To test a release against TestPyPI, run the `Release` workflow manually with the same tag and set `test_pypi` to `true`. For automatic tag-push releases, set the GitHub repository variable `RELEASE_TEST_PYPI` to `true` before pushing the tag. Manual runs still require the tag to point to a commit on `main`. The workflow expects these GitHub repository secrets: - `PYPI_API_TOKEN` for uploads to PyPI. - `TEST_PYPI_API_TOKEN` for uploads to TestPyPI.