Release checklist
1. Validate develop
bash
source .venv/bin/activate
git checkout develop
git pull origin develop
pytest -q
python scripts/fix_github_math_macros.py --check
rm -rf dist build *.egg-info
python -m pip install build twine
python -m build
python -m twine check "dist/*"2. TestPyPI dry validation
Run the TestPyPI GitHub Actions workflow manually with:
text
publish = falseThis only builds and validates the distributions.
3. Configure TestPyPI Trusted Publisher
Create a TestPyPI account if needed.
Configure a pending Trusted Publisher using:
text
Project name: relationalstats
Owner: HubertRonald
Repository: relationalstats
Workflow file: test-pypi.yml
Environment: testpypi4. Publish to TestPyPI
Run the TestPyPI workflow manually with:
text
publish = true5. Test installation from TestPyPI
bash
python3.10 -m venv /tmp/relationalstats-testpypi
source /tmp/relationalstats-testpypi/bin/activate
python -m pip install --upgrade pip
python -m pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ relationalstats==0.1.0a1
python - <<'PY'
import relationalstats
print(relationalstats.__version__)
PY6. Create release branch
bash
source .venv/bin/activate
git checkout develop
git pull origin develop
git checkout -b release/v0.1.0a1
git push -u origin release/v0.1.0a1Open a PR:
text
release/v0.1.0a1 -> main7. Configure PyPI Trusted Publisher
Configure a pending Trusted Publisher using:
text
Project name: relationalstats
Owner: HubertRonald
Repository: relationalstats
Workflow file: release.yml
Environment: pypiRequire manual approval for the pypi environment.
8. Merge release branch to main
After checks pass, merge the release PR into main.
9. Tag release from main
bash
source .venv/bin/activate
git checkout main
git pull origin main
pytest -q
git tag v0.1.0a1
git push origin v0.1.0a1The tag should trigger the Release workflow and publish to PyPI.