Skip to main content

tests release quality-gate-status security-rating vulnerabilities codecov ruff ty crates.io pypi status license downloads python

zerv logo

zerv

Dynamic versioning from git. Every commit gets its version. Keep semantic-release on main. Let zerv prerelease every other branch.

Documentation: zerv.wisl.dev

Why zerv?

  • Runs next to semantic-release - semantic-release decides releases on main; zerv versions every other build: any commit on any branch, even with uncommitted changes. No build is ever unversioned.
  • Two modes - zerv flow automates pre-release management from Git branch patterns; zerv version gives full manual control with schemas, overrides, and templates.
  • Any output format - SemVer, PEP440, CalVer, or Tera templates. Generate every format your pipelines need from a single ZERV RON payload.

See how zerv compares to semantic-release, setuptools-scm, dunamai, and git describe in Why zerv.

Installation

# Python (uv) - Recommended
uv tool install zerv-version

# Python (pip)
pip install zerv-version

# Rust (cargo)
cargo install zerv

# Installation script (latest, or `bash -s vX.X.X` for a specific version)
curl -sSL https://raw.githubusercontent.com/wislertt/zerv/main/scripts/install.sh | bash

# Pre-built binaries
# https://github.com/wislertt/zerv/releases

The PyPI wheel also exposes a Python binding: import zerv.

Quick Start

Version any Git state: zerv flow generates meaningful SemVer versions from any Git state, no manual configuration required.

# The current branch determines the output
zerv flow
# → 1.0.0 (on main branch with tag v1.0.0)
# → 1.0.1-rc.1.post.3 (on release branch with pre-release tag)
# → 1.0.1-beta.1.post.3+develop.3.gf297dd0 (on develop branch)
# → 1.0.1-alpha.59394.post.1+feature.new.auth.1.g4e9af24 (on feature branch)
# → 1.0.1-alpha.17015.post.1.dev.1764382150+feature.dirty.work.1.g54c499a (on dirty feature branch)

Fan one ZERV RON payload out to every format your pipelines need in the quickstart.

Documentation

Full documentation lives at zerv.wisl.dev:

  • Why zerv - positioning vs semantic-release, setuptools-scm, dunamai, git describe
  • Quickstart - one ZERV RON payload to every format
  • Concepts - flow, version, schema system, formats and templates, config file
  • CI/CD - GitHub Actions usage, coexisting with semantic-release
  • CLI reference - zerv version, zerv flow, zerv check, zerv render
  • Python binding - import zerv from the PyPI wheel
  • Troubleshooting

Development

git clone https://github.com/wislertt/zerv.git
cd zerv

uv tool install bakefile

bake setup-dev        # Install pre-commit hooks and cargo-tarpaulin

bake test             # Full test suite (Docker Git + Docker tests enabled)
bake test-rust        # Rust tests only
bake test-python      # Python binding tests only
bake lint             # Formatting and clippy checks
bake docs             # Local Mintlify docs dev server

The project uses uv and mise for dependency and tool management.

Contributing

Contributions are welcome. See CLAUDE.md for development guidelines, including project structure, testing conventions, and the development workflow.

Author

Wisaroot Lertthaweedech – wisl.dev

License

Licensed under the Apache License 2.0. See LICENSE for the full text.

The wordmark in docs/img/brand/ uses outlined paths from Sora, licensed under the SIL Open Font License 1.1.

Release files for zerv-version 0.8.29

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for zerv-version 0.8.29
File Size Uploaded
zerv_version-0.8.29.tar.gz 919.7 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for zerv-version 0.8.29
File
zerv_version-0.8.29-py3-none-win_arm64.whl Python 3 none Windows ARM64 Details
zerv_version-0.8.29-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
zerv_version-0.8.29-py3-none-musllinux_1_2_x86_64.whl Python 3 none Linux musl 1.2+ x86-64 Details
zerv_version-0.8.29-py3-none-musllinux_1_2_aarch64.whl Python 3 none Linux musl 1.2+ ARM64 Details
zerv_version-0.8.29-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details
zerv_version-0.8.29-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details
zerv_version-0.8.29-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
zerv_version-0.8.29-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details

Total release size: 18.4 MB

Release files / zerv_version-0.8.29.tar.gz

Download URL zerv_version-0.8.29.tar.gz
Size 919.7 kB
Tags Source
SHA-256 checksum
How to use checksums
ea982a6c23311b85270137be5ae3eff8fea797821c2d6d5d4bb1464ab6032ada
BLAKE2b-256 checksum
How to use checksums
0a3c499afdaeab717417b73ca5fbc759f696e302434f06b88c91b81a5d5eba36
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / zerv_version-0.8.29-py3-none-win_arm64.whl

Download URL zerv_version-0.8.29-py3-none-win_arm64.whl
Size 2.1 MB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
16f81eb60d22e2400d137b0356e66b5244ffc8fe8bd698bc547691ab054e6683
BLAKE2b-256 checksum
How to use checksums
23d1867e40e621ab7b12173f72dc7766f57d7d8220b82d994676b8f39599338d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / zerv_version-0.8.29-py3-none-win_amd64.whl

Download URL zerv_version-0.8.29-py3-none-win_amd64.whl
Size 2.2 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
17294c295666348596db2dfe83987dcb196e990a5e0d6b89e89698a9cd7cd5aa
BLAKE2b-256 checksum
How to use checksums
1f7f46cfaaf56493bda7f081fb69dfb6dac80c3f56be6778c4c2832b43225f12
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / zerv_version-0.8.29-py3-none-musllinux_1_2_x86_64.whl

Download URL zerv_version-0.8.29-py3-none-musllinux_1_2_x86_64.whl
Size 2.3 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
3412c74c832673200c0b43a1481df9d57eeb1a649559f18d510335fa1439cc1b
BLAKE2b-256 checksum
How to use checksums
872b60c66a27319989ac2885d9665c0cae3a5b7e763f21697a83f31da931cdc1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / zerv_version-0.8.29-py3-none-musllinux_1_2_aarch64.whl

Download URL zerv_version-0.8.29-py3-none-musllinux_1_2_aarch64.whl
Size 2.2 MB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
d29d54630edac60b6ebd9cc179ef3c502a6509fc0368ac5e4532df39b4cb7271
BLAKE2b-256 checksum
How to use checksums
6bb7d0612f12059ea0d1b2be00911cf4b6dda1e5b401908feddbafd8108b0c21
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / zerv_version-0.8.29-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL zerv_version-0.8.29-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.3 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
db4c4fcf4abb95dd407fdabb2a7d9f90f65d204cff9834a45d74b5a53fd2a6b1
BLAKE2b-256 checksum
How to use checksums
38fd23dce32613d6e3f8744e1e4c3b25059b143e6703feb43b0bdb16209c3f3e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / zerv_version-0.8.29-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL zerv_version-0.8.29-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 2.2 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
e77b01091a1d1905bb958348842ffdc9cb23e2450e0ea3431c899d773b97f285
BLAKE2b-256 checksum
How to use checksums
59a43c0fd6fd646e93936e384a5899e9b3754a3b14c65fa68e5fc8233e61eaf5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / zerv_version-0.8.29-py3-none-macosx_11_0_arm64.whl

Download URL zerv_version-0.8.29-py3-none-macosx_11_0_arm64.whl
Size 2.1 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
85d3683ce1c32996f53817c980097f6fe3bcf062d4695024c3e12058ea3967f8
BLAKE2b-256 checksum
How to use checksums
aee50e637cfcb2cf9fad03f93c2c794686c7a4cd05359d451707100030b6cab3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / zerv_version-0.8.29-py3-none-macosx_10_12_x86_64.whl

Download URL zerv_version-0.8.29-py3-none-macosx_10_12_x86_64.whl
Size 2.2 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
faf3b2e39ec80f9a248f83e203f56e7b1c6bc0ed71a37d537a80d4f39de0aca0
BLAKE2b-256 checksum
How to use checksums
8d3e5a8061d060e3f36e9184e1c9ac71c47feba03d367271e47c45e9ab889ca6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page