Skip to main content

throughline-transform

A throughline requirements graph on disk — committed or not — in the forms its readers open. One command, one file:

pipx install throughline-transform      # pulls tl and tl-compose along too

tl-transform md      -C idd             # Markdown, written by the tool itself
tl-transform notes   -C idd             # a folder of notes for Obsidian (zip)
tl-transform notes   -C idd --folder    # …or the folder itself, ready to open as a vault
tl-transform csv     -C idd             # one row per item, a links file, a file per cited source (zip)
tl-transform xlsx    -C idd             # the same as a read-only workbook that still sorts and filters
tl-transform docx    -C idd             # a Word document: title page, contents, a heading per item
tl-transform html    -C idd             # a print-ready page — print it to PDF from any browser

It is the command-line half of the throughline editor's export: the same six forms, laid out the same way, from the graph as it stands on your disk. The editor needs the graph on GitHub. This does not — it reads the working tree, and the output says whether that tree was clean, carried uncommitted changes, or was not under version control at all.

What it does not do

It never renders an item's words. The Markdown is asked of tl docs over a document of directives; the structure is read from tl dump. What this package adds is the containers — a workbook, a Word document, a folder of notes, a print-ready page — and the front matter and link syntax a note tool reads. If a requirement here rendered prose, it would drift from what tl docs --check gates, and a document that quietly differs from the published specification is worse than none. That is NG-0001.

It ships no PDF writer (NG-0002). Every browser prints to PDF with a renderer that is already on the machine.

It depends on nothing but the family. throughline and throughline-compose, and the standard library's zipfile for the two Office formats, which are written from their own specifications.

Which tool answers

A graph whose throughline.toml declares [[sources]] is read through tl-compose; any other through tl. That is not cosmetic: over a composed graph the core command exits cleanly and writes a borrowed clause as its synthetic uid alone, dropping the reference number a conformance document exists to carry. The tool is found beside this package's interpreter first and on the path second, and is run as a command — its command line is the surface it publishes.

The outputs

Format What you get
md The tool's own document: a summary, a catalogue of every item in full, the mirrored clauses of adopted sources. --body table or both for a one-line-per-item table, --matrix for one traceability matrix per grounding link type, --markers to keep the region markers so tl docs can refill the file later.
notes One Markdown note per item in a folder per register: YAML front matter as properties (type, status, attributes, the title as an alias, a tag each for type and status), a heading of the identifier and title, the item's words, rationale and links, then what links to it — Implements this, Derives from this — every identifier a [[wikilink]]. Cited clauses under sources/<namespace>/, the colon in their name replaced by a space. Open the folder as an Obsidian vault: the graph view is the intent graph, and a note's backlinks are what rests on it.
csv A zip of one file of items (or one per register with --split per-register), links.csv with one row per link naming the sheet at each end, one file per cited source, and the provenance.
xlsx The same as sheets, read-only by recommendation with the structure locked and no password. Sorting and filtering stay allowed; a spreadsheet nobody can sort is one nobody can review.
docx A title page with the provenance, a contents field Word fills in, a section per register, a heading per item with its type and status beneath, its words as a quotation, its rationale, its attributes in small print, and one appendix per cited source.
html The same document as one self-contained page with print typography, A4 page rules and a contents list of links. Print it to PDF; the browser numbers the pages.
blocks The document's structure as JSON — the same list of headings, quotations, paragraphs, attribute lines, tables and appendices the Word and HTML outputs are built from — for a front end that lays out its own pages. The editor's PDF is laid out from it.

Every output carries the repository, ref, commit, working-tree state and tool version it was taken from, because an output outlives the tree that made it and the first question anyone asks of one is what it was true of. A caller that knows them without git — the editor holds them from its clone — states them with --repository, --ref, --commit and --tree clean|dirty|untracked, and git is then not consulted.

A quick run is silent. When a step — reading the graph, asking the tool to write the document, writing the file — has run for a second, one line on stderr says which, because a composed graph fetching its sources for the first time otherwise reads as a hang.

One implementation, two surfaces

The throughline editor runs this package as a wheel under Pyodide beside tl and tl-compose, so an export from a browser tab and an export from a terminal are the same bytes for the same graph at the same commit. Pyodide has no processes, so there the tool calls the console entry point tl or tl-compose declares in its package metadata — the same function the command runs — instead of spawning it.

Self-hosting

This repository's own requirements live under idd/ and compose throughline's graph as a pinned source, so a requirement here can cite the clause of the tool it reads (satisfies: tl:SR-0111) and have the citation resolved rather than asserted.

tl-compose -C idd check --strict     # the grounding gate
tl-compose -C idd docs --check       # idd/docs/spec.md must match the graph
tl-transform html -C idd             # and the tool over its own graph

Apache-2.0. Created by Dr Henry J Grech-Cini; see PROVENANCE.md.

Metadata

Release files for throughline-transform 0.3.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 throughline-transform 0.3.0
File Size Uploaded
throughline_transform-0.3.0.tar.gz 44.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for throughline-transform 0.3.0
File Interpreter ABI Platform
throughline_transform-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 85.2 kB

Release files / throughline_transform-0.3.0.tar.gz

Download URL throughline_transform-0.3.0.tar.gz
Size 44.9 kB
Tags Source
SHA-256 checksum
How to use checksums
dbafb79908ba007f7721e09fa6a8741cbd7a779271968405c8763af2bb4ca394
BLAKE2b-256 checksum
How to use checksums
cf0ef356be95b6680c28c18adcb72d4b2c490f9c2c6770b5a605ff9d0de040b3
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 7, 2026.

Transparency log

Release files / throughline_transform-0.3.0-py3-none-any.whl

Download URL throughline_transform-0.3.0-py3-none-any.whl
Size 40.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3a2d8fc2921eae81068450681da42748e46a23b68010459c030603be926523fb
BLAKE2b-256 checksum
How to use checksums
a07b3f16e3795d32cfa93acabf8ae5d435530f40fdb591773ade948168ae8031
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 7, 2026.

Transparency log

Release history Release notifications | RSS feed

0.6.0

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.0

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