Wunderspec
Wunderspec is a Python DSL for writing and checking executable specifications.
Distributed systems often fail due to unforeseen issues: message reordering, race condition, stale observations, retry behavior, crashes and restarts, network outages, vibe code. Adding more example tests is often not enough to find these bugs before they make it to production. Specifications written in Wunderspec surface these issues early, so that teams find design flaws before they become production incidents.
This is the open-core distribution.
📋 Wunderspec in 5 minutes: the Wunderspec in Five Minutes gives you a quick overview of the core concepts.
📋 Cheatsheet: the Wunderspec cheatsheet summarizes the DSL and CLI in a few pages — keep it open while you work.
💡 Using Quint? Try this command:
uv tool install wunderspec wunderspec convert --from=spec.qnt --to=spec.py --main=main
1. Wunderspec in Action
Follow Bob in his Wunderspec adventure. There, Bob writes a specification of a write-ahead log, finds a bug, replays the counterexample and fixes the specification.
2. Installation
Using uv:
uv tool install wunderspec
After installation, the CLI is available:
wunderspec --help
If you want to add Wunderspec as a dependency, just type:
uv add wunderspec
uv sync
3. Features
This open-core package includes the features marked ✅ in the Open Core column. Premium-only command names stay visible for discoverability, but those commands are not included in this package.
| Feature | Open Core | Premium |
|---|---|---|
| Symbolic expression evaluator | ✅ | ✅ |
wunderspec lint |
✅ | ✅ |
wunderspec run |
✅ | ✅ |
wunderspec replay |
✅ | ✅ |
wunderspec convert |
✅ | ✅ |
wunderspec check |
✅ | ✅ |
wunderspec with-tlc |
✅ | ✅ |
wunderspec with-apalache |
✅ | ✅ |
wunderspec fuzz |
❌ | ✅ |
wunderspec rust |
❌ | ✅ |
wunderspec lean |
❌ | ✅ |
4. Release Provenance
- Release tag:
v0.137.3 - Source commit:
be86a4dd5da2668b37f5287a80ab13ef025b645c
See tests/README.md for the development test log captured at release time.
5. Latest Release Notes
Changes since public release v0.137.1.
- Fix AST pickle loading that could execute arbitrary code through
builtins.evaland other globals. Allow only explicit AST and sort classes and the internal AST enums; reject pickle extensions that bypass the class allowlist. - Deprecate
save_astandload_astin favor ofwunderspec.transfer, planned for v0.138.0. Load pickle files only if you produced them yourself.
6. License
Wunderspec is distributed under the Functional Source License, Version 1.1, with an Apache 2.0 future license (FSL-1.1-ALv2). See LICENSE.
Metadata
Release files for wunderspec 0.137.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| wunderspec-0.137.3.tar.gz | 4.3 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wunderspec-0.137.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 4.5 MB
Release files / wunderspec-0.137.3.tar.gz
| Download URL | wunderspec-0.137.3.tar.gz |
|---|---|
| Size | 4.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6e7abc79ef88a7af3b878b4e43d01e35f8cd7fc4a2ca54566a32bc2df0025be2
|
|
BLAKE2b-256 checksum How to use checksums |
5cef7aa53493f239d217dce445bd38571d9f49e216420b67fc137e50ba20aa29
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logRelease files / wunderspec-0.137.3-py3-none-any.whl
| Download URL | wunderspec-0.137.3-py3-none-any.whl |
|---|---|
| Size | 273.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fc7dc0ad7a88254839f3e528b31adc1b4cd6b6228d55e8bef0b4b1d95d990a99
|
|
BLAKE2b-256 checksum How to use checksums |
62013aba7f4f2a4cde25caea2f220e23c9e151d130ae2a5a7687ccb0864612c7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency log