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 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 alone (composition is the Tool's own since 3.11.1), and the standard library's zipfile for the two Office formats, which are written from their own specifications.

Which tool answers

Every graph is read through tl, which composes a graph that declares [[sources]] itself, so a borrowed clause is written with the reference number a conformance document exists to carry; tl-compose is a second name for the same program. 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, 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 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.4.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 throughline-transform 0.4.1
File Size Uploaded
throughline_transform-0.4.1.tar.gz 45.2 kB Details

Built distribution (wheel)

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

Total release size: 85.5 kB

Release files / throughline_transform-0.4.1.tar.gz

Download URL throughline_transform-0.4.1.tar.gz
Size 45.2 kB
Tags Source
SHA-256 checksum
How to use checksums
d1266054d4446c7290311f14aa86b5d196cc1b190db54747d953c8e49874623b
BLAKE2b-256 checksum
How to use checksums
f2d22257ae13a262fb3b17915350291e6cba5460f169910e29f5204b60208103
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 18, 2026.

Transparency log

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

Download URL throughline_transform-0.4.1-py3-none-any.whl
Size 40.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0ace3a931d6ee7eb1061927611c3174bc01752df5686f9f4b35f2491a7c8ec63
BLAKE2b-256 checksum
How to use checksums
dce65801bca6202a41902bae3e3c091a455a73498c55c1740ac8216f596bcc07
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 18, 2026.

Transparency log

Release history Release notifications | RSS feed

0.6.0

2 release files

0.5.0

2 release files

This release

0.4.1 This release

2 release files

0.4.0

2 release files

0.3.0

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