Duckstring
There is no DAG.
Build data pipelines the way you build software: version each transform, declare its dependencies, and Duckstring resolves the execution DAG automatically.
pip install duckstring[pond] name = "sales" version = "1.2.0" [sources] transactions = "1.0.0" products = "1.1.0"
A transform is a Pond: a versioned Python package that declares its parents. Deploys are independent, majors run side by side, and the pipeline is implicit in the package graph — nobody builds it, draws it, or governs it.
Looking for cloud hosting — a Catchment run for you? I'd like to hear from you: dev@duckstring.com