Versioning Strategy¶
canVODpy uses unified semantic versioning across all packages in the monorepo — one version number covers all eight packages, released together.
Why Unified Versioning?¶
-
Scientific Reproducibility
A single version number enables unambiguous citation in papers.
pip install canvodpy==0.2.0recreates a known-compatible environment. Supports FAIR principles for scientific software. -
Sollbruchstellen
Independent during development; coherent at release time. Develop and test packages independently, release them together with one tag.
Semantic Versioning¶
Following Semantic Versioning 2.0.0:
MAJOR.MINOR.PATCH
| Increment | Trigger | Example |
|---|---|---|
MAJOR |
Breaking API changes | 0.9.0 → 1.0.0 |
MINOR |
New features, backwards compatible | 0.1.0 → 0.2.0 |
PATCH |
Bug fixes, backwards compatible | 0.1.0 → 0.1.1 |
Pre-release identifiers: 0.2.0-alpha.1 · 0.2.0-beta.1 · 0.2.0-rc.1
Creating Releases¶
just release 0.2.0 # minor release
just release 0.1.1 # patch release
just release 1.0.0 # major release
Or by bump type:
just bump minor # 0.1.0 → 0.2.0
just bump patch # 0.1.0 → 0.1.1
just bump major # 0.1.0 → 1.0.0
just release runs tests → generates CHANGELOG → bumps version in all packages → creates a git tag.
Version Files¶
All pyproject.toml files are kept in sync by commitizen:
[tool.commitizen]
version = "0.1.0"
version_files = [
"canvodpy/pyproject.toml:version",
"packages/canvod-readers/pyproject.toml:version",
"packages/canvod-auxiliary/pyproject.toml:version",
"packages/canvod-grids/pyproject.toml:version",
"packages/canvod-vod/pyproject.toml:version",
"packages/canvod-store/pyproject.toml:version",
"packages/canvod-viz/pyproject.toml:version",
"packages/canvod-utils/pyproject.toml:version",
]
Git tags follow vMAJOR.MINOR.PATCH — e.g. v0.1.0, v1.0.0, v0.2.0-beta.1.
Deprecation Policy¶
- Version N — Feature deprecated with
DeprecationWarning - Version N+1 — Louder warning, migration guide in docs
- Version N+2 — Feature removed, MAJOR version bump
Citation¶
@software{canvodpy2026,
author = {Bader, Nicolas and Contributors},
title = {canvodpy: GNSS Vegetation Optical Depth Analysis},
version = {0.2.0},
year = {2026},
url = {https://github.com/nfb2021/canvodpy},
doi = {10.5281/zenodo.XXXXXXX}
}
"Analysis was performed using canvodpy v0.2.0 (Bader et al., 2026)."