Skip to content

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

  1. Open the repository Settings → Environments.
  2. Create an environment named pypi (optional: restrict who can deploy).

PyPI Trusted Publisher

  1. Sign in to PyPI as a project owner/maintainer of pypepper.
  2. Open Publishing for the project (or pending publisher if the next version is new).
  3. Add a Trusted Publisher (GitHub):
  4. Owner: jovijovi
  5. Repository: pypepper
  6. Workflow name: publish.yml
  7. Environment name: pypi

No long-lived API token is stored in the repository. A local .pypirc (gitignored) is only for manual uploads.

Release checklist

  1. Bump version in pyproject.toml (keep runtime pins in requirements.txt / requirements-dev.txt in sync when you change dependencies).
  2. Update CHANGELOG.md and merge to main.
  3. On the release commit (usually main tip):
git tag vX.Y.Z
git push origin vX.Y.Z

Example: if pyproject.toml has version = "0.6.3", the tag must be v0.6.3.

  1. 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.toml version mismatch blocks upload.
  2. Confirm the version on https://pypi.org/project/pypepper/.

Manual fallback

Local publish (uses your machine credentials / .pypirc):

make publish-test   # TestPyPI
make publish        # PyPI

Automated TestPyPI publishing from tags is not configured; use make publish-test when needed.