Summary
Watch the dbt project's models/ tree and auto-run dbts build --select <changed>+ whenever files change.
Why
Tightens the feedback loop for iterative model dev — no need to manually re-trigger after each save. Useful for incremental tinkering on a single model or small DAG.
Caveats
- Likely overlaps with dbt's own
--defer / state-based workflows.
- Could over-trigger on noisy editors that save partial files.
- Filing for visibility / discussion before committing to it.
Sketch
watchdog (or watchfiles) listening on models/.
- Debounce burst saves (300–500 ms).
- For each event batch: resolve changed paths → model names →
dbt_runner.run("build", ...).
- Default selector strategy: just the changed nodes (no
+); flag for + if you want descendants.
Where it'd live
- New module
src/dbts/watch.py.
- New dependency on
watchdog or watchfiles.
Effort
Medium — main work is debounce + clean shutdown handling.
Tier
Tier 2 — lesser idea (maybe duplicative of dbt's own deferral / hot-reload work).
Summary
Watch the dbt project's
models/tree and auto-rundbts build --select <changed>+whenever files change.Why
Tightens the feedback loop for iterative model dev — no need to manually re-trigger after each save. Useful for incremental tinkering on a single model or small DAG.
Caveats
--defer/ state-based workflows.Sketch
watchdog(orwatchfiles) listening onmodels/.dbt_runner.run("build", ...).+); flag for+if you want descendants.Where it'd live
src/dbts/watch.py.watchdogorwatchfiles.Effort
Medium — main work is debounce + clean shutdown handling.
Tier
Tier 2 — lesser idea (maybe duplicative of dbt's own deferral / hot-reload work).