Automatically increments semver number based on interface changes.
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file semver_dredd-1.0.20260704001.tar.gz.
File metadata
- Download URL: semver_dredd-1.0.20260704001.tar.gz
- Upload date:
- Size: 51.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a1d67335fe980e329f9aaccf3e20daea094e30f4318672cb7903016eef8b8528
|
|
| MD5 |
4e8d5557689df5a5b766ee5a7002a15c
|
|
| BLAKE2b-256 |
9be8d1783cb0a6dfad606aff40e45f82854f1fc092d1d764095b340f98669852
|
File details
Details for the file semver_dredd-1.0.20260704001-py3-none-any.whl.
File metadata
- Download URL: semver_dredd-1.0.20260704001-py3-none-any.whl
- Upload date:
- Size: 67.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9736763830813b248bfda71973204ad2669a7a2ac73e7c092a4aecff8055096d
|
|
| MD5 |
4bdb309285165c6c3b16d5e6ac7c2354
|
|
| BLAKE2b-256 |
4a4db751d415142d68a80108231b770611235fddf9e3634ea0706f0c6b53c98b
|