Skip to main content

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 LogNode mailbox engine (pure, sync). ✓
  • Phase 2 — oracle conformance (tests/test_oracle.py, whole-transcript ==). ✓
  • Phase 4 — the taut-shape-tool CLI (node/client modes over stdin/stdout framing, python3 -m taut_shape.tool; see src/taut_shape/tool/main.py). ✓
  • Phase 5 — interop matrix participation (taut-shape/matrix/driver.py runs this tool as the py language). ✓
  • Phase 3 (an asyncio shell) — 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.10.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for taut-shape 0.10.0
File Size Uploaded
taut_shape-0.10.0.tar.gz 94.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for taut-shape 0.10.0
File Interpreter ABI Platform
taut_shape-0.10.0-py3-none-any.whl Python 3 none any Details

Total release size: 177.8 kB

Release files / taut_shape-0.10.0.tar.gz

Download URL taut_shape-0.10.0.tar.gz
Size 94.1 kB
Tags Source
SHA-256 checksum
How to use checksums
f30541c5c88878fc9f8c0fd84cfc633a5276fb50bec2e8ab1e80fcf5ce777c90
BLAKE2b-256 checksum
How to use checksums
79dc994d9b91ef16ba779bad265a22dd96aee41377444016b2c9906d5aa6e134
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 Sep 30, 2026.

Transparency log

Release files / taut_shape-0.10.0-py3-none-any.whl

Download URL taut_shape-0.10.0-py3-none-any.whl
Size 83.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
185d16e4f54fb7dc44e8c6fbc04b49cf73dd283fb9a1f2720c2363dcfe83b7fd
BLAKE2b-256 checksum
How to use checksums
b4389affcbd18e98bca6f2e81b6b4e0f7cc5112b6d66c662c238031e7847ea07
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 Sep 30, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.10.0 This release

2 release files

0.9.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page