Release¶
Publish PyPepper to PyPI by pushing a Git tag. The package version in pyproject.toml is authoritative; the tag must match it.
One-time setup¶
Do this once before the first tag-triggered release.
GitHub¶
- Open the repository Settings → Environments.
- Create an environment named
pypi(optional: restrict who can deploy).
PyPI Trusted Publisher¶
- Sign in to PyPI as a project owner/maintainer of
pypepper. - Open Publishing for the project (or pending publisher if the next version is new).
- Add a Trusted Publisher (GitHub):
- Owner:
jovijovi - Repository:
pypepper - Workflow name:
publish.yml - Environment name:
pypi
No long-lived API token is stored in the repository. A local .pypirc (gitignored) is only for manual uploads.
Release checklist¶
- Bump
versioninpyproject.toml(keep runtime pins inrequirements.txt/requirements-dev.txtin sync when you change dependencies). - Update
CHANGELOG.mdand merge tomain. - On the release commit (usually
maintip):
Example: if pyproject.toml has version = "0.6.3", the tag must be v0.6.3.
- Watch Actions → Publish to PyPI. The workflow runs lint/docs on Python 3.13, then pretest on Python 3.10 and 3.14 (sample ends of the supported range); build/upload stays on 3.13. A failing pretest or a tag/
pyproject.tomlversion mismatch blocks upload. - Confirm the version on https://pypi.org/project/pypepper/.
Manual fallback¶
Local publish (uses your machine credentials / .pypirc):
Automated TestPyPI publishing from tags is not configured; use make publish-test when needed.