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.31

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.31
File Size Uploaded
zerv_version-0.8.31.tar.gz 924.6 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for zerv-version 0.8.31
File
zerv_version-0.8.31-py3-none-win_arm64.whl Python 3 none Windows ARM64 Details
zerv_version-0.8.31-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
zerv_version-0.8.31-py3-none-musllinux_1_2_x86_64.whl Python 3 none Linux musl 1.2+ x86-64 Details
zerv_version-0.8.31-py3-none-musllinux_1_2_aarch64.whl Python 3 none Linux musl 1.2+ ARM64 Details
zerv_version-0.8.31-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.31-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details
zerv_version-0.8.31-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
zerv_version-0.8.31-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details

Total release size: 18.5 MB

Release files / zerv_version-0.8.31.tar.gz

Download URL zerv_version-0.8.31.tar.gz
Size 924.6 kB
Tags Source
SHA-256 checksum
How to use checksums
5eede72fa5251408fb10e96ae4e8af57ab479598c6314edfcabb31b8572d4b03
BLAKE2b-256 checksum
How to use checksums
289db8145fc431e6b498ca8a13b58cb28d3009bde809c2a34d6069ce32dd4997
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","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.31-py3-none-win_arm64.whl

Download URL zerv_version-0.8.31-py3-none-win_arm64.whl
Size 2.1 MB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
127a32df6619862ec17d7a1f44e4e0e97a912f600bbf7d2eea06e48da322695d
BLAKE2b-256 checksum
How to use checksums
191b76b6eea06f96dafb93323cba01372bb4ed7cadf3f80031b19c4cd4b0f28e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","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.31-py3-none-win_amd64.whl

Download URL zerv_version-0.8.31-py3-none-win_amd64.whl
Size 2.2 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
bcb26a57cea010f8a05b19cf7a48174edc3c3b7d08e32f3c24658ee4f67ed1ff
BLAKE2b-256 checksum
How to use checksums
909d9a67e01093360f3a06b9f7def6d0d972c7ed95bba15598f3ec6d99618a1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","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.31-py3-none-musllinux_1_2_x86_64.whl

Download URL zerv_version-0.8.31-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
cee88e94eec93d7504277cf03d1d40b420f72bb17c318937a535a88cab78b5c1
BLAKE2b-256 checksum
How to use checksums
adfcd44a20091e5c310be1c393414c25c414525ad2bc069cd808f70720162eed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","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.31-py3-none-musllinux_1_2_aarch64.whl

Download URL zerv_version-0.8.31-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
0fd7d4090b6d8c7335e2c70aa160810ddebf518e99270e60df31b555e945a7ba
BLAKE2b-256 checksum
How to use checksums
68ac99436ad6503d30071b818c3e218452f756aa0eb22a417cdd7445dbbb079e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","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.31-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL zerv_version-0.8.31-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
f834b62c905788b54fc123570d3ad6dbc45766a247fb7c093a21f828485cf656
BLAKE2b-256 checksum
How to use checksums
53b38a2715a4dee464e20c9f1ae696ab68db7087db53f578faba00b5cdd798cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","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.31-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL zerv_version-0.8.31-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
f9678f858f0f9206c24cb28489be775eef58d45ed31f44afea034c9e9cbdc689
BLAKE2b-256 checksum
How to use checksums
24399f7f69be8716f0d4e532f847cac0c0f0f59bb13a7bc6f7c2ca9a111f377e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","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.31-py3-none-macosx_11_0_arm64.whl

Download URL zerv_version-0.8.31-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
0f979a18ed3c8bce6025e412ca0a53e39efd78b84fecb7aec0ef26f0e93d4d23
BLAKE2b-256 checksum
How to use checksums
f23c4caf82ed8f33a85cae771a71ca408d9b80c146472f14881fe9b3c37f431c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","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.31-py3-none-macosx_10_12_x86_64.whl

Download URL zerv_version-0.8.31-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
d801bb61bdc18a4b0af5be169f02623fe8ba2f73528d6c2794c1b85efca58cc5
BLAKE2b-256 checksum
How to use checksums
56b66ad5d86baf73473d4671e89876041d1916751e85f278344f28e76f26d968
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","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