Pipeline DSL
Pipeline DSL
Python, Scheme, JSON. Three layers, one contract.
A Harmont pipeline goes through three forms before it runs:
- Python — what you write.
from harmont import pipeline, command, ...Decorators and helpers. See Python. - Scheme — what the Python transpiles to. s-expressions consumed by the s7 interpreter. You can write Scheme directly if you prefer. See Scheme.
- JSON — what
harmont-evalemits andharmont-apiconsumes. Stable contract:{"version": "1", "steps": [...]}. See JSON contract.
Why three? Process isolation: harmont-eval is a subprocess, not a
library. The JSON contract is the only thing that crosses the boundary,
so a misbehaving DSL never crashes the API.