Pipeline DSL
Python DSL
What pipeline authors write.
The Python DSL is a thin frozen-dataclass layer over the Scheme DSL.
Every class has a to_scheme() method; the pipeline file's job is to
construct a Pipeline and print its Scheme. harmont-api runs that
through harmont-eval to get the JSON contract.
Minimal example
from sci_dsl import Pipeline, CommandStep, WaitStep
pipeline = Pipeline(
steps=[
CommandStep("npm test", label="Test", key="test"),
WaitStep(),
CommandStep("npm run deploy", label="Deploy", key="deploy"),
],
env={"CI": "true"},
)
print(pipeline.to_scheme())The output is Scheme, not JSON — the API does the final evaluation step.
Source of truth
cidsl/py/sci_dsl/— package source (steps.py,pipeline.py, etc.).cidsl/py/tests/test_roundtrip.py— Python → Scheme → JSON parity tests.