Skip to content

Commit 3abb115

Browse files
handle inline model freshness config (#11728) (#11737)
* Revert "bump dbt-common (#11640)" This reverts commit c6b7655. * update freshness model config handling * make sure ModelConfig.__pre_deserialize__ returns all nested items as dicts * add changie (cherry picked from commit f4988c6) Co-authored-by: Colin Rogers <[email protected]>
1 parent cdb9b1c commit 3abb115

File tree

3 files changed

+32
-1
lines changed

3 files changed

+32
-1
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
kind: Fixes
2+
body: ignore invalid model freshness configs in inline model configs
3+
time: 2025-06-10T21:12:41.972614-07:00
4+
custom:
5+
Author: colin-rogers-dbt
6+
Issue: "11728"

core/dbt/artifacts/resources/v1/model.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,20 @@ class ModelConfig(NodeConfig):
7575
)
7676
freshness: Optional[ModelFreshness] = None
7777

78+
@classmethod
79+
def __pre_deserialize__(cls, data):
80+
data = super().__pre_deserialize__(data)
81+
# scrub out model configs where "build_after" is not defined
82+
if (
83+
"freshness" in data
84+
and isinstance(data["freshness"], dict)
85+
and "build_after" in data["freshness"]
86+
):
87+
data["freshness"] = ModelFreshness.from_dict(data["freshness"]).to_dict()
88+
else:
89+
data.pop("freshness", None)
90+
return data
91+
7892

7993
@dataclass
8094
class CustomGranularity(dbtClassMixin):

tests/functional/model_config/test_freshness_config.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,16 @@
5555
select 1 as id
5656
"""
5757

58+
models__model_freshness_sql_inline = """
59+
{{ config(
60+
materialized='table',
61+
freshness={
62+
'warn_after': {'count': 24, 'period': 'hour'}
63+
}
64+
) }}
65+
select 1 as id
66+
"""
67+
5868
models__source_freshness_sql = """
5969
select * from {{ source('my_source', 'source_table') }}
6070
"""
@@ -74,9 +84,10 @@ def models(self):
7484
"model_b.sql": models__model_freshness_sql,
7585
"model_c.sql": models__source_freshness_sql,
7686
"model_d.sql": models__both_freshness_sql,
87+
"model_e.sql": models__model_freshness_sql_inline,
7788
}
7889

7990
def test_model_freshness_configs(self, project):
8091
run_dbt(["parse"])
8192
compile_results = run_dbt(["compile"])
82-
assert len(compile_results) == 4 # All 4 models compiled successfully
93+
assert len(compile_results) == 5 # All 4 models compiled successfully

0 commit comments

Comments
 (0)