taut-shape (Python)
pip install taut-shape → import taut_shape.
A pure-Python implementation of the Taut atom, log, stream, and value delivery shapes. No Rust,
no PyO3, no native extension. The engine is a synchronous mailbox endpoint
(LogNode.handle(msg) -> [outputs]); the only concurrency is an optional
asyncio shell layered on top (not yet built).
This is a clean-room implementation: written against the shared plan
(taut-shape/dev-docs/TautClientImplPlan.md, D1–D19) and the behavioral oracle
(taut-shape/corpus/log.v0.json) only — it does not mirror taut-shape-rs. A
hand-written engine that still reproduces every oracle vector is the evidence
that the oracle, not shared source, is the contract.
Status
- Phase 0 — scaffold + vendored generated message types. ✓
- Phase 1 — the
LogNodemailbox engine (pure, sync). ✓ - Phase 2 — oracle conformance (
tests/test_oracle.py, whole-transcript==). ✓ - Phase 4 — the
taut-shape-toolCLI (node/clientmodes over stdin/stdout framing,python3 -m taut_shape.tool; seesrc/taut_shape/tool/main.py). ✓ - Phase 5 — interop matrix participation (
taut-shape/matrix/driver.pyruns this tool as thepylanguage). ✓ - Phase 3 (an
asyncioshell) — not built; the engine has no built-in concurrency layer beyond the CLI's synchronous read/handle/write loop.
Layout
src/taut_shape/log/
_generated.py # tautc-generated message/value types (vendored, do NOT edit)
messages.py # InMsg/OutMsg unions + re-exports
_window.py # store core: bounded window, head/floor, evict (internal)
_sessions.py # session table: held reads, timers, watermarks (internal)
engine.py # LogNode.handle + read-only accessors
src/taut_shape/value/
_generated.py # tautc-generated value messages (vendored, do NOT edit)
engine.py # attributed LWW ValueNode
src/taut_shape/atom/
_generated.py # tautc-generated atom messages (vendored, do NOT edit)
engine.py # latest-state AtomNode
src/taut_shape/stream/
_generated.py # tautc-generated stream messages (vendored, do NOT edit)
engine.py # bounded live-only StreamNode
Tool (node / client)
Run the framing CLI as a module. Both modes accept exact --shape <NAME>
selection and default to log; the implemented registry contains atom, log,
stream, and value.
PYTHONPATH=../taut/src:src python3 -m taut_shape.tool node --shape log
PYTHONPATH=../taut/src:src python3 -m taut_shape.tool client --shape log \
--stream-id s1 --from 0
PYTHONPATH=../taut/src:src python3 -m taut_shape.tool client --shape value \
--value-id value-A --stream-id s1 --reads 1
PYTHONPATH=../taut/src:src python3 -m taut_shape.tool client --shape atom \
--atom-id atom-A --stream-id s1 --from 0
PYTHONPATH=../taut/src:src python3 -m taut_shape.tool client --shape stream \
--stream-id live-metrics
An unsupported name exits 2 with TAUT_SHAPE_UNSUPPORTED_SHAPE before stdin is
read or a client request is written.
Running the tests
The taut codec is a workspace sibling; point PYTHONPATH at it:
PYTHONPATH=../taut/src:src pytest
Metadata
Release files for taut-shape 0.9.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| taut_shape-0.9.1.tar.gz | 91.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| taut_shape-0.9.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 175.4 kB
Release files / taut_shape-0.9.1.tar.gz
| Download URL | taut_shape-0.9.1.tar.gz |
|---|---|
| Size | 91.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
415682b0db59cf6868dc0449b7cb5727f859ab3b16614df16afed5094dce1c89
|
|
BLAKE2b-256 checksum How to use checksums |
b9b11bc83c84d7dea6c29ec831c34ab850886b92b80172dc4bfe229e1b94a7b7
|
| 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 Aug 26, 2026.
Transparency logRelease files / taut_shape-0.9.1-py3-none-any.whl
| Download URL | taut_shape-0.9.1-py3-none-any.whl |
|---|---|
| Size | 83.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fdd66c7833e4be23839719492eb8dc9276878db896ace81cf78c93d99d91cd1d
|
|
BLAKE2b-256 checksum How to use checksums |
26d89c237676ffaebf49347be6d596a16277c38cfcb01a3215adab603e162ac3
|
| 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 Aug 26, 2026.
Transparency log