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

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.9.1
File Size Uploaded
taut_shape-0.9.1.tar.gz 91.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for taut-shape 0.9.1
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

0.10.0

2 release files

This release

0.9.1 This release

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