Releasing
GASFIR uses hatchling as its build backend and publishes to both TestPyPI and PyPI via GitLab CI/CD.
Version Numbering
Versions follow SemVer: MAJOR.MINOR.PATCH.
The version is defined only in pyproject.toml:
[project]
version = "0.9.0"
src/gasfir/__init__.py reads it at import time via importlib.metadata
so there is a single source of truth.
Release Process
Update
pyproject.tomlto the new version.Update
CHANGELOG.md— move items from Unreleased to the new version section with today’s date.Commit with message
chore: release vX.Y.Z.Push and open a merge request into
main.After the MR is merged, tag
main:git tag vX.Y.Z git push origin vX.Y.Z
CI Publishing Rules
Tag / branch |
Published to |
Approval required |
|---|---|---|
|
TestPyPI |
No |
|
TestPyPI |
No |
|
PyPI |
Yes — manual approval in GitLab |
Verifying the TestPyPI Release
Install from TestPyPI to verify before the production release:
pip install --index-url https://test.pypi.org/simple/ \
--extra-index-url https://pypi.org/simple/ \
gasfir==X.Y.Z