Releasing
July 30, 2026 · View on GitHub
S2Mosaic is published to PyPI by tag-push. The version comes from the git tag
itself (via setuptools-scm) — there is no version file to bump.
Versioning
Follow SemVer:
- Major (
v2.0.0→v3.0.0): incompatible API change — removed args, changed signatures, behavioural changes that break existing callers. - Minor (
v2.0.0→v2.1.0): backwards-compatible feature added. - Patch (
v2.0.0→v2.0.1): backwards-compatible bug fix. - Pre-release (
v2.0.0b1,v2.0.0b2, …): a beta of the next version. PyPI treats these as pre-releases, sopip install s2mosaickeeps resolving to the latest stable and onlypip install --pre s2mosaicpicks them up. Use one when a change needs real-world exposure before it becomes the default install.
Any commit that lands on main between releases shows up at install time as
a development version like 2.0.1.dev3+g1234abc — useful but not something
you publish.
Release checklist
-
Sync
mainlocally:git checkout main git pull -
Update
CHANGELOG.md: add a## [<version>] - <YYYY-MM-DD>section at the top, above the previous release, with the changes grouped under### Added/### Changed/### Fixed. There is no[Unreleased]block — entries are written straight under the version being released. Commit onmain:git commit -am "Cut <version>: <short summary>" git push -
Tag and push:
git tag v<version> # e.g. v2.0.0 git push origin v<version>The tag must match
v<major>.<minor>.<patch>, optionally with a pre-release suffix — the publish workflow filters onv[0-9]+.[0-9]+.[0-9]+*, sov2.0.0b3andv2.0.0rc1both match. Pre-releases are whatv2.0.0b1andv2.0.0b2used. -
Approve the deploy: the
Publish to PyPIworkflow runsuv buildand uploads to PyPI via OIDC trusted publishing. ThepypiGitHub environment is gated by a required reviewer — go to Actions → Publish to PyPI → Review deployments → Approve to release. -
Verify:
- PyPI page: https://pypi.org/project/s2mosaic/
- GitHub Releases: https://github.com/DPIRD-DMA/S2Mosaic/releases (auto-generated release notes + wheel/sdist attached).