Skip to main content

Protocol specifications as Python code

Project description

Wunderspec

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.

📋 Cheatsheet: the Wunderspec cheatsheet summarizes the DSL and CLI on a single page — keep it open while you work.

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 add wunderspec

After installation, the CLI is available:

wunderspec --help

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.128.6
  • Source commit: 74459d8fbc7cd1fd4f197e60d157ca7a94d8b226

See tests/README.md for the development test log captured at release time.

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wunderspec-0.128.6.tar.gz (4.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wunderspec-0.128.6-py3-none-any.whl (256.6 kB view details)

Uploaded Python 3

File details

Details for the file wunderspec-0.128.6.tar.gz.

File metadata

  • Download URL: wunderspec-0.128.6.tar.gz
  • Upload date:
  • Size: 4.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wunderspec-0.128.6.tar.gz
Algorithm Hash digest
SHA256 c24784eef1d3e399c7cc66a687f71e0f1144a46460134f17bb3f79a5e6074d44
MD5 106281231f0bc8f36cd8bb888bc75c92
BLAKE2b-256 cb721e3fdfde60576e172de2db2e7cc319001b0d1ac0a7c24ef94aff807a0955

See more details on using hashes here.

Provenance

The following attestation bundles were made for wunderspec-0.128.6.tar.gz:

Publisher: publish.yml on wunderspec/wunderspec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wunderspec-0.128.6-py3-none-any.whl.

File metadata

  • Download URL: wunderspec-0.128.6-py3-none-any.whl
  • Upload date:
  • Size: 256.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wunderspec-0.128.6-py3-none-any.whl
Algorithm Hash digest
SHA256 a3a854e396eae321552c1d3d3e1f4416a9f423050af30b1d5f91771d89e04b64
MD5 2fefc0ee1b15153d8e6b24641d580ab1
BLAKE2b-256 115d4fb92999917fd0b5541ae6a5d744eee95df6ae9888b52eb718c644cccdac

See more details on using hashes here.

Provenance

The following attestation bundles were made for wunderspec-0.128.6-py3-none-any.whl:

Publisher: publish.yml on wunderspec/wunderspec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page