semver-dredd
Semantic-versioning workflow for public APIs.
semver-dredd compares a saved API snapshot with the current source tree,
classifies the change as NONE, PATCH, MINOR, or BREAKING, and helps you
write or suggest the next version.
What it is
- Core engine for snapshot loading, diffing, version math, and config resolution.
- Plugin-based API inspection for different languages and source models.
- CLI workflow for initializing a project, checking API drift, baking a new release baseline, generating standalone snapshots, and inspecting plugins.
- Programmatic Python API for direct use in tests, release automation, or custom tooling.
Officially documented plugin keys:
pythongojavajavaparserbundle(built into core for VERSION-file dependency bundles)
What it does
semver-dredd supports:
- config-driven workflows via
.semver.yaml .env/ environment / CLI override precedence- multi-document config candidate fallback
- plugin-specific
include/excludescope forwarding - machine-readable plugin inventory via
plugin list --json|--yaml - plugin metadata and generator provenance in plugin snapshots
- pathless
status,bake, andsnapshotwhensource.pathis configured
Install
# Core package
pip install semver-dredd
# Install the plugins you want
pip install python-3.10-dredd
pip install go-1.20-dredd
pip install java-1.8-dredd
pip install javaparser-1.8-dredd
# Or install the official meta-package
# (includes python/go/java; install javaparser separately)
pip install semver-dredd-all
Development install:
poetry install --with dev
poetry run pip install -e plugins/python-3.10-dredd
poetry run pip install -e plugins/go-1.20-dredd
poetry run pip install -e plugins/java-1.8-dredd
poetry run pip install -e plugins/javaparser-1.8-dredd
Run it
Typical first-run workflow:
semver-dredd plugin list
semver-dredd init . --plugin python --version 1.0.0
semver-dredd status --details
semver-dredd bake
Plugin inspection lives under the plugin command group. The supported
inventory command is semver-dredd plugin list (there is no top-level
semver-dredd list alias).
The important workflow rule is:
initrequires an explicit--plugin- later commands can use
.semver.yamldefaults - CLI arguments override environment, which overrides config
Language examples:
# Python
semver-dredd init mypackage --plugin python --version 1.0.0
semver-dredd status --details
# Go
semver-dredd init ./pkg/api --plugin go --version 1.0.0
semver-dredd status ./pkg/api --plugin go --details
# Java (regex parser)
semver-dredd init ./src/main/java --plugin java --version 1.0.0
# JavaParser (AST parser)
semver-dredd init ./src/main/java --plugin javaparser --version 1.0.0
For full command reference and common workflows, see USAGE.md.
Configuration
The main project config is .semver.yaml.
- Generate a commented template with
semver-dredd template - See a full, worked example in
example/semver_showcase.yaml - See the config/schema reference in
SCHEMA.md - Environment variables (
SEMVER_DREDD_*) and the full precedence order (config <.env< environment < CLI) are documented inUSAGE.md
Managed files typically include:
| File | Purpose |
|---|---|
.semver.yaml |
project configuration |
baked.yaml |
release baseline snapshot |
current.yaml |
latest generated snapshot |
VERSION |
current version string |
Extend or patch it
- Plugin authoring guide:
HOWTO.md - Snapshot/config schema reference:
SCHEMA.md - Example plugins:
plugins/ - Demos and example configs:
example/
Useful development commands:
poetry run pytest -v
poetry run python -m cli --help
bash example/demo_python.sh
bash scripts/smoke.sh python unit
Programmatic API
from semverdredd import compare_and_suggest
result, suggested = compare_and_suggest(
"old_module",
"new_module",
plugin_name="python",
current_version="1.2.0",
)
print(result.change_kind.name)
print(suggested)
The CLI/docs cover the primary user workflow; the importable API is best suited for automation and tests.
Metadata
Release files for semver-dredd 1.0.20260704001
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| semver_dredd-1.0.20260704001.tar.gz | 51.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| semver_dredd-1.0.20260704001-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 119.0 kB
Release files / semver_dredd-1.0.20260704001.tar.gz
| Download URL | semver_dredd-1.0.20260704001.tar.gz |
|---|---|
| Size | 51.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a1d67335fe980e329f9aaccf3e20daea094e30f4318672cb7903016eef8b8528
|
|
BLAKE2b-256 checksum How to use checksums |
9be8d1783cb0a6dfad606aff40e45f82854f1fc092d1d764095b340f98669852
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.19
|
Release files / semver_dredd-1.0.20260704001-py3-none-any.whl
| Download URL | semver_dredd-1.0.20260704001-py3-none-any.whl |
|---|---|
| Size | 67.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9736763830813b248bfda71973204ad2669a7a2ac73e7c092a4aecff8055096d
|
|
BLAKE2b-256 checksum How to use checksums |
4a4db751d415142d68a80108231b770611235fddf9e3634ea0706f0c6b53c98b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.19
|