Skip to content
yyolkPublic

Repository files navigation

parch

parch

PyPI Python 3.14+ CI License: MIT

parch generates fixed e-ink PDF pages.

Install / Press

Needs Python 3.14+.

From PyPI

uv tool install parch          # or: pip install parch
parch init -o planner.toml     # Spec defaults as TOML (no checkout)
parch press planner.toml -o nomad-2026.pdf
parch specimen -w out

No checkout needed. One-shot: uvx parch press -o nomad-2026.pdf. parch init emits Spec defaults via Spec.to_toml; sample jobs also live in examples/ (not in the wheel).

From a checkout

uv sync --group dev
uv run parch press examples/nomad.toml -o out/nomad-2026.pdf
uv run parch specimen -w out   # PNG catalog (Nomad + Scribe); click a thumb to expand in place
uv run parch proof examples/nomad.toml -o out/exp-typeramp-proof.pdf

Architecture

Device → Component (data only) → Section (build Page) → Layout (chrome + seat) → Plotter → Press
Device id size resolution notes
SuperNote Nomad supernote-nomad 118.87 × 158.5 mm 1404×1872 @ 300 PPI top clearance 8 mm reserved; writing clearance 4 mm; root_body 8.5pt
Kindle Scribe (1st gen) kindle-scribe 157.48 × 209.97 mm 1860×2480 @ 300 PPI top clearance 0; writing clearance 4 mm; bottom clearance 10 mm; root_body 8.5pt

Any device can set top_clearance = 0 to drop the reserved top band. Omit the key to keep the Device default. Bottom clearance is separate.

Tests

uv run pytest
uv run ruff check src tests && uv run ruff format --check src tests

Dev Container

Codespaces / Dev Containers use ghcr.io/yyolk/parch-devcontainer (venv at /home/vscode/.venv). After the first image publish, set that GHCR package to Public.

Releasing

Ship steps live in Releasing.

License / Credits

MIT — see LICENSE.

Historical inspiration: Vitaliy Kudryk’s LYP. fpdf2 Plotter rewrite; not a port of LYP sources.

Runtime dependency fpdf2 is LGPL-3.0, separate from this MIT license.

Vendored Jost (Book / Medium / Bold / Heavy) is SIL OFL 1.1 — see src/parch/fonts/LICENSE.