Harmont docs
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.

On this page