Versioning
DeepTab follows Semantic Versioning 2.0 and uses Conventional Commits to automate version bumps and changelog generation via commitizen.
Version format
MAJOR.MINOR.PATCH
Segment |
When it increments |
|---|---|
|
Breaking change ( |
|
New backwards-compatible feature ( |
|
Backwards-compatible bug fix ( |
Release candidates use the suffix rcN, e.g. 1.8.0rc1.
The version is defined in one place only — pyproject.toml — and read at runtime via importlib.metadata:
from importlib.metadata import version
__version__ = version("deeptab")
Commit types and their effect
Commit type |
Example |
Version bump |
|---|---|---|
|
|
Minor |
|
|
Patch |
|
|
Patch |
|
|
Major |
|
|
None |
|
|
None |
|
|
None |
|
|
None |
|
|
None |
|
|
None |
Commit messages that do not match any of these types do not trigger a version bump.
Making a conventional commit
Use commitizen’s interactive prompt rather than writing the message by hand:
just commit # opens the cz commit wizard
Or write the message directly:
git commit -m "feat(models): add NODE architecture"
git commit -m "fix(configs): validate n_layers > 0"
The commit-msg pre-commit hook validates every commit message against the conventional commits format and rejects non-conforming messages.
Bumping the version
On a release/vX.Y.Z branch, let commitizen determine the next version automatically:
cz bump
This command:
Reads all conventional commits since the last tag.
Determines the next version (
MAJOR,MINOR, orPATCH).Updates
versioninpyproject.toml.Appends the new section to
CHANGELOG.md.Creates a local commit
bump: version X.Y.Z-1 → X.Y.Z.
For a release candidate, set the version explicitly instead:
poetry version 1.8.0rc1
poetry lock
git add pyproject.toml poetry.lock CHANGELOG.md
git commit -m "bump: version 1.7.0 → 1.8.0rc1"
Changelog
CHANGELOG.md at the repository root is the authoritative changelog. It is updated automatically by cz bump on stable releases. For release candidates, update it manually before tagging.
The changelog format groups changes under the commit types (feat, fix, perf, etc.) and lists the subject line of every matching commit since the previous release.