300fe465

By: Lucien Huber <im@lcnbr.ch>

bundle standalone Linnest rendering in linnet-py

Move the generic renderer into Linnest, pass topology through a versioned CBOR graph spec, and render in-process through typst-py without a Clinnet runtime dependency. Bundle Linnest, Kurvst, CeTZ, and oxifmt in wheels and source distributions, including licenses and provenance, and publish a Python 3.10+ abi3 wheel.

Snapshot user Typst source trees for prepared renders, support explicit source roots for parent-relative imports, preserve package-cache inputs, and keep physics styling as a Python-side example. Make structural edge names first-class, preserve selector fallback for INHERIT, and expose complete runtime signatures for typed render options.

Checks:
- cargo fmt, check, and strict clippy
- 69 Python tests with real Typst 0.15 rendering
- focused Nix nextest: 16 Linnet integration, 174 Linnet, and 85 Linnest tests
- documentation and generated Python stubs
- source distribution to isolated cp310-abi3 wheel and SVG render

User requests:
- "yes that sounds good! Also note that we want to publish this as its own wheel, so we would have to bundle linnest and the templates?"
- "But we don’t really need clinnet except for the templates"
- "Can you continue now?"
- "continue"
GitHub
Time to Start Worker time Duration Time to finish Idle
Config 2s 9s 9s 11s 2s
Eval 10s 1m11s 1m11s 1m21s 0s
Build 1m14s 8h12m55s 1h35m31s 1h36m46s 0s
Test 33m24s 20m34s 1h04m36s 1h38m01s 5s
Deploy - - - - 141h41m15s
Suite 2s 8h34m49s - - 141h41m23s

Timeline

Config Eval Build Test Failed Retried Compressed gap
0s1m2m3m4m5m6m7m8m9m10m11m12m13m14m15m16m17m18m19m20m21m22m23m24m25m26m27m28m29m30m31m32m33m34m35m36m37m38m39m40m41m42m43m44m45m46m47m48m49m50m51m52m53m54m55m56m57m58m59m1h0m1h1m1h2m1h3m1h4m1h5m1h6m1h7m1h8m1h9m1h10m1h11m1h12m1h13m1h14m1h15m1h16m1h17m1h18m1h19m1h20m1h21m1h22m1h23m1h24m1h25m1h26m1h27m1h28m1h29m1h30m1h31m1h32m1h33m1h34m1h35m1h36m1h37m1h38m