wunderspec 0.129.2__tar.gz → 0.129.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. {wunderspec-0.129.2 → wunderspec-0.129.3}/PKG-INFO +3 -3
  2. {wunderspec-0.129.2 → wunderspec-0.129.3}/README.md +2 -2
  3. {wunderspec-0.129.2 → wunderspec-0.129.3}/pyproject.toml +1 -1
  4. {wunderspec-0.129.2 → wunderspec-0.129.3}/tests/README.md +4 -4
  5. {wunderspec-0.129.2 → wunderspec-0.129.3}/uv.lock +1 -1
  6. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/__init__.py +1 -1
  7. wunderspec-0.129.3/wunderspec/fuzzer.py +34 -0
  8. wunderspec-0.129.2/wunderspec/fuzzer.py +0 -7
  9. {wunderspec-0.129.2 → wunderspec-0.129.3}/.devcontainer/Dockerfile +0 -0
  10. {wunderspec-0.129.2 → wunderspec-0.129.3}/.devcontainer/devcontainer.json +0 -0
  11. {wunderspec-0.129.2 → wunderspec-0.129.3}/.devcontainer/post-create.sh +0 -0
  12. {wunderspec-0.129.2 → wunderspec-0.129.3}/.flake8 +0 -0
  13. {wunderspec-0.129.2 → wunderspec-0.129.3}/.github/workflows/build.yml +0 -0
  14. {wunderspec-0.129.2 → wunderspec-0.129.3}/.github/workflows/convert-to-tla.yml +0 -0
  15. {wunderspec-0.129.2 → wunderspec-0.129.3}/.github/workflows/lint.yml +0 -0
  16. {wunderspec-0.129.2 → wunderspec-0.129.3}/.github/workflows/publish.yml +0 -0
  17. {wunderspec-0.129.2 → wunderspec-0.129.3}/.github/workflows/run-examples.yml +0 -0
  18. {wunderspec-0.129.2 → wunderspec-0.129.3}/.gitignore +0 -0
  19. {wunderspec-0.129.2 → wunderspec-0.129.3}/CONTRIBUTING.md +0 -0
  20. {wunderspec-0.129.2 → wunderspec-0.129.3}/LICENSE +0 -0
  21. {wunderspec-0.129.2 → wunderspec-0.129.3}/assets/design/README.md +0 -0
  22. {wunderspec-0.129.2 → wunderspec-0.129.3}/assets/design/png/wunderspec-avatar-github-1024.png +0 -0
  23. {wunderspec-0.129.2 → wunderspec-0.129.3}/assets/design/png/wunderspec-avatar-github-256.png +0 -0
  24. {wunderspec-0.129.2 → wunderspec-0.129.3}/assets/design/png/wunderspec-avatar-github-512.png +0 -0
  25. {wunderspec-0.129.2 → wunderspec-0.129.3}/assets/design/png/wunderspec-icon-circle-dark-1024.png +0 -0
  26. {wunderspec-0.129.2 → wunderspec-0.129.3}/assets/design/png/wunderspec-icon-circle-dark-512.png +0 -0
  27. {wunderspec-0.129.2 → wunderspec-0.129.3}/assets/design/png/wunderspec-icon-circle-transparent-1024.png +0 -0
  28. {wunderspec-0.129.2 → wunderspec-0.129.3}/assets/design/png/wunderspec-lockup-horizontal-dark-1600.png +0 -0
  29. {wunderspec-0.129.2 → wunderspec-0.129.3}/assets/design/png/wunderspec-lockup-horizontal-dark-800.png +0 -0
  30. {wunderspec-0.129.2 → wunderspec-0.129.3}/assets/design/png/wunderspec-mark-transparent-1024.png +0 -0
  31. {wunderspec-0.129.2 → wunderspec-0.129.3}/assets/design/png/wunderspec-readme-header-dark-1200x480.png +0 -0
  32. {wunderspec-0.129.2 → wunderspec-0.129.3}/assets/design/png/wunderspec-readme-header-dark-1600x640.png +0 -0
  33. {wunderspec-0.129.2 → wunderspec-0.129.3}/assets/design/png/wunderspec-social-preview-1280x640.png +0 -0
  34. {wunderspec-0.129.2 → wunderspec-0.129.3}/assets/design/png/wunderspec-wordmark-transparent-900.png +0 -0
  35. {wunderspec-0.129.2 → wunderspec-0.129.3}/assets/design/svg/wunderspec-avatar-github.svg +0 -0
  36. {wunderspec-0.129.2 → wunderspec-0.129.3}/assets/design/svg/wunderspec-icon-circle-dark.svg +0 -0
  37. {wunderspec-0.129.2 → wunderspec-0.129.3}/assets/design/svg/wunderspec-icon-circle-transparent.svg +0 -0
  38. {wunderspec-0.129.2 → wunderspec-0.129.3}/assets/design/svg/wunderspec-lockup-horizontal-dark.svg +0 -0
  39. {wunderspec-0.129.2 → wunderspec-0.129.3}/assets/design/svg/wunderspec-lockup-horizontal-transparent.svg +0 -0
  40. {wunderspec-0.129.2 → wunderspec-0.129.3}/assets/design/svg/wunderspec-mark-transparent.svg +0 -0
  41. {wunderspec-0.129.2 → wunderspec-0.129.3}/assets/design/svg/wunderspec-readme-header-dark.svg +0 -0
  42. {wunderspec-0.129.2 → wunderspec-0.129.3}/assets/design/svg/wunderspec-wordmark-transparent.svg +0 -0
  43. {wunderspec-0.129.2 → wunderspec-0.129.3}/basedpyrightconfig.json +0 -0
  44. {wunderspec-0.129.2 → wunderspec-0.129.3}/docs/references/from-quint-llms.md +0 -0
  45. {wunderspec-0.129.2 → wunderspec-0.129.3}/docs/references/from-tla-llms.md +0 -0
  46. {wunderspec-0.129.2 → wunderspec-0.129.3}/docs/user-references/booleans.md +0 -0
  47. {wunderspec-0.129.2 → wunderspec-0.129.3}/docs/user-references/cheatsheet.html +0 -0
  48. {wunderspec-0.129.2 → wunderspec-0.129.3}/docs/user-references/comprehensions.md +0 -0
  49. {wunderspec-0.129.2 → wunderspec-0.129.3}/docs/user-references/decorators.md +0 -0
  50. {wunderspec-0.129.2 → wunderspec-0.129.3}/docs/user-references/enums.md +0 -0
  51. {wunderspec-0.129.2 → wunderspec-0.129.3}/docs/user-references/flow.md +0 -0
  52. {wunderspec-0.129.2 → wunderspec-0.129.3}/docs/user-references/integers.md +0 -0
  53. {wunderspec-0.129.2 → wunderspec-0.129.3}/docs/user-references/lists.md +0 -0
  54. {wunderspec-0.129.2 → wunderspec-0.129.3}/docs/user-references/maps.md +0 -0
  55. {wunderspec-0.129.2 → wunderspec-0.129.3}/docs/user-references/records.md +0 -0
  56. {wunderspec-0.129.2 → wunderspec-0.129.3}/docs/user-references/sets.md +0 -0
  57. {wunderspec-0.129.2 → wunderspec-0.129.3}/docs/user-references/state-machine.md +0 -0
  58. {wunderspec-0.129.2 → wunderspec-0.129.3}/docs/user-references/strings.md +0 -0
  59. {wunderspec-0.129.2 → wunderspec-0.129.3}/docs/user-references/temporal.md +0 -0
  60. {wunderspec-0.129.2 → wunderspec-0.129.3}/docs/user-references/tuples.md +0 -0
  61. {wunderspec-0.129.2 → wunderspec-0.129.3}/docs/user-references/unions.md +0 -0
  62. {wunderspec-0.129.2 → wunderspec-0.129.3}/docs/user-stories/bobs_log.md +0 -0
  63. {wunderspec-0.129.2 → wunderspec-0.129.3}/docs/user-stories/bobs_log.png +0 -0
  64. {wunderspec-0.129.2 → wunderspec-0.129.3}/docs/user-stories/img/bob.png +0 -0
  65. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/bags.py +0 -0
  66. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/bakery.py +0 -0
  67. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/bakery_walk.py +0 -0
  68. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/ben_or.py +0 -0
  69. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/channel.py +0 -0
  70. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/dekker.py +0 -0
  71. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/epfd.py +0 -0
  72. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/examples.yaml +0 -0
  73. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/fifo.py +0 -0
  74. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/fpaxos.py +0 -0
  75. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/kv_store.py +0 -0
  76. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/lamport_mutex.py +0 -0
  77. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/ledger.py +0 -0
  78. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/minimmit.py +0 -0
  79. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/payment.py +0 -0
  80. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/producer_consumer.py +0 -0
  81. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/readers_writers.py +0 -0
  82. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/readers_writers_walk.py +0 -0
  83. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/simple_ponzi.py +0 -0
  84. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/simple_ponzi_machine.py +0 -0
  85. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/simple_ponzi_machine_walk.py +0 -0
  86. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/simple_wal1.py +0 -0
  87. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/simple_wal2.py +0 -0
  88. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/sliding_puzzles.py +0 -0
  89. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/sloppy_counter.py +0 -0
  90. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/test_simple_ponzi_machine.py +0 -0
  91. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/tiny_workers.py +0 -0
  92. {wunderspec-0.129.2 → wunderspec-0.129.3}/examples/two_phase.py +0 -0
  93. {wunderspec-0.129.2 → wunderspec-0.129.3}/pyrightconfig.json +0 -0
  94. {wunderspec-0.129.2 → wunderspec-0.129.3}/scripts/__init__.py +0 -0
  95. {wunderspec-0.129.2 → wunderspec-0.129.3}/scripts/_spec_utils.py +0 -0
  96. {wunderspec-0.129.2 → wunderspec-0.129.3}/scripts/convert_examples_to_tla.py +0 -0
  97. {wunderspec-0.129.2 → wunderspec-0.129.3}/scripts/run_examples.py +0 -0
  98. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/__main__.py +0 -0
  99. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/_edition.py +0 -0
  100. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/apalache.py +0 -0
  101. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/api.py +0 -0
  102. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/ast/__init__.py +0 -0
  103. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/ast/action_ast.py +0 -0
  104. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/ast/ast.py +0 -0
  105. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/ast/list_ast.py +0 -0
  106. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/ast/map_ast.py +0 -0
  107. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/ast/record_ast.py +0 -0
  108. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/ast/serialization.py +0 -0
  109. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/ast/set_ast.py +0 -0
  110. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/ast/sorts.py +0 -0
  111. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/ast/temporal_ast.py +0 -0
  112. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/ast/terms.py +0 -0
  113. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/ast/tuple_ast.py +0 -0
  114. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/ast/union_ast.py +0 -0
  115. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/cli.py +0 -0
  116. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/dev_debug.py +0 -0
  117. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/doc_format.py +0 -0
  118. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/errors.py +0 -0
  119. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/exec/__init__.py +0 -0
  120. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/exec/action_exec.py +0 -0
  121. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/exec/context.py +0 -0
  122. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/exec/scheduler.py +0 -0
  123. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/explain.py +0 -0
  124. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/expr.py +0 -0
  125. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/flow.py +0 -0
  126. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/interpreter.py +0 -0
  127. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/interpreter_sampling.py +0 -0
  128. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/interpreter_value.py +0 -0
  129. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/itf_trace.py +0 -0
  130. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/lang.py +0 -0
  131. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/linter.py +0 -0
  132. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/machine.py +0 -0
  133. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/model_checker.py +0 -0
  134. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/permutation.py +0 -0
  135. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/petnames.py +0 -0
  136. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/pretty.py +0 -0
  137. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/py.typed +0 -0
  138. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/quint_convert.py +0 -0
  139. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/random_walk.py +0 -0
  140. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/source_tracking.py +0 -0
  141. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/submachine.py +0 -0
  142. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/sym_context.py +0 -0
  143. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/tla.py +0 -0
  144. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/tlc.py +0 -0
  145. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/tlc_trace.py +0 -0
  146. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/trace_output.py +0 -0
  147. {wunderspec-0.129.2 → wunderspec-0.129.3}/wunderspec/uniq_names.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wunderspec
3
- Version: 0.129.2
3
+ Version: 0.129.3
4
4
  Summary: Protocol specifications as Python code
5
5
  Author: Igor Konnov, Thomas Pani
6
6
  License-File: LICENSE
@@ -74,8 +74,8 @@ commands are not included in this package.
74
74
 
75
75
  ## 4. Release Provenance
76
76
 
77
- - Release tag: `v0.129.2`
78
- - Source commit: `f60e52f632281f5cbb2d1a382ea49b10750d2f4d`
77
+ - Release tag: `v0.129.3`
78
+ - Source commit: `b21d0bd6cd54d3e259e418626727410c4875ac0b`
79
79
 
80
80
  See [tests/README.md](https://github.com/wunderspec/wunderspec/blob/main/tests/README.md)
81
81
  for the development test log captured at release time.
@@ -58,8 +58,8 @@ commands are not included in this package.
58
58
 
59
59
  ## 4. Release Provenance
60
60
 
61
- - Release tag: `v0.129.2`
62
- - Source commit: `f60e52f632281f5cbb2d1a382ea49b10750d2f4d`
61
+ - Release tag: `v0.129.3`
62
+ - Source commit: `b21d0bd6cd54d3e259e418626727410c4875ac0b`
63
63
 
64
64
  See [tests/README.md](https://github.com/wunderspec/wunderspec/blob/main/tests/README.md)
65
65
  for the development test log captured at release time.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "wunderspec"
3
- version = "0.129.2"
3
+ version = "0.129.3"
4
4
  description = "Protocol specifications as Python code"
5
5
  authors = [
6
6
  {name = "Igor Konnov"},
@@ -6,9 +6,9 @@ public distribution to keep the package focused. The full development
6
6
 
7
7
  ## Release Provenance
8
8
 
9
- - Release tag: `v0.129.2`
10
- - Source commit: `f60e52f632281f5cbb2d1a382ea49b10750d2f4d`
11
- - Test log captured at: `2026-06-16T05:57:10Z`
9
+ - Release tag: `v0.129.3`
10
+ - Source commit: `b21d0bd6cd54d3e259e418626727410c4875ac0b`
11
+ - Test log captured at: `2026-06-16T07:26:42Z`
12
12
  - `make test` exit code: `0`
13
13
 
14
14
  ## Full Test Log From the Development Repository
@@ -124,5 +124,5 @@ tests/test_tla.py ...................................................... [ 94%]
124
124
  tests/test_tlc_trace.py .... [ 98%]
125
125
  tests/test_trace_output.py ......................... [100%]
126
126
 
127
- ====================== 2343 passed, 11 skipped in 30.13s =======================
127
+ ====================== 2343 passed, 11 skipped in 25.63s =======================
128
128
  ```
@@ -1781,7 +1781,7 @@ wheels = [
1781
1781
 
1782
1782
  [[package]]
1783
1783
  name = "wunderspec"
1784
- version = "0.129.2"
1784
+ version = "0.129.3"
1785
1785
  source = { editable = "." }
1786
1786
  dependencies = [
1787
1787
  { name = "executing" },
@@ -144,7 +144,7 @@ from .random_walk import state_view
144
144
  from .source_tracking import enable_source_tracking
145
145
  from .submachine import SubMachine
146
146
 
147
- __version__ = "0.129.2"
147
+ __version__ = "0.129.3"
148
148
 
149
149
  __all__ = [
150
150
  # Constructor functions
@@ -0,0 +1,34 @@
1
+ """Open-core build placeholder for a Wunderspec Premium module."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from pathlib import Path
6
+ from typing import TYPE_CHECKING, Any
7
+
8
+ from wunderspec._edition import require_feature
9
+
10
+ if TYPE_CHECKING:
11
+
12
+ class FuzzerCorpus:
13
+ def __init__(self) -> None: ...
14
+ def __len__(self) -> int: ...
15
+ def load(self, directory: Path) -> None: ...
16
+ def save(self, directory: Path) -> None: ...
17
+ def save_args(self, directory: Path, args: dict[str, Any]) -> None: ...
18
+
19
+ class FuzzStats:
20
+ generations: int
21
+ total_execs: int
22
+ total_steps: int
23
+ total_retries: int
24
+ corpus_size: int
25
+ violations: int
26
+ examples_found: int
27
+ timed_out: bool
28
+ violation_schedules: list[tuple[int, ...]]
29
+ example_schedules: list[tuple[int, ...]]
30
+
31
+ def fuzz(*args: Any, **kwargs: Any) -> FuzzStats: ...
32
+
33
+
34
+ require_feature("fuzz")
@@ -1,7 +0,0 @@
1
- """Open-core build placeholder for a Wunderspec Premium module."""
2
-
3
- from __future__ import annotations
4
-
5
- from wunderspec._edition import require_feature
6
-
7
- require_feature("fuzz")
File without changes
File without changes
File without changes