← All Releases
v0.2.12
IT JUST FEDERATES
Protection by acceptance: a standard model that reads federated sources can never run through dbt alone — so DVT now runs it as federated, with a warning, instead of failing. The dag stays dbt's, the magic stays yours. Plus two extraction fixes the case exposed.
CHANGED
- ▸Federated sources federate the model: a table/view/ephemeral that reads a source on another connection — or refs a federated model — runs as f_table; an incremental runs as f_incremental. Each coercion warns once and names the model; setting the f_* materialization explicitly silences it. It cascades downstream, so an entire lineage over federated data just works. The dag is never reordered — dbt's graph drives everything; only the engine executing the model changes.
FIXED
- ▸A view sandwiched between two federated models (f_table → view → f_table) used to run before its federated parent existed. Under coercion the whole chain is federation, ordered by its own dependency waves — straight from dbt's manifest.
- ▸Refs to target-overridden models extract from where the loader actually put them (the override output's own profile schema), not where the manifest says dbt would have put them.
- ▸Mixed-case schemas survive extraction: quoting is now minimal and per-engine — postgres-family re-quotes the 'STG' that dbt created quoted; Snowflake and Oracle still resolve lowercase names to their uppercase storage unquoted.
- ▸dvt build no longer errors on tests over foreign-connection sources — dbt compiles those against the default engine where the relation cannot exist; they are now skipped with a loud warning naming each one.
Get it: pip install dvt-core==0.2.12 · wheels on PyPI for macOS (arm64 + x86_64) and Linux, Python 3.10–3.12.