From d99a25fb22c4b11a4c1c932cbf0f1032ef4a7fba Mon Sep 17 00:00:00 2001 From: Iaroslav Zeigerman Date: Mon, 17 Nov 2025 11:40:07 -0800 Subject: [PATCH] Fix: Support of the null meta config in dbt model / source definitions --- sqlmesh/dbt/common.py | 6 ++++-- tests/fixtures/dbt/sushi_test/models/schema.yml | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/sqlmesh/dbt/common.py b/sqlmesh/dbt/common.py index 240d59084a..67e1a788cf 100644 --- a/sqlmesh/dbt/common.py +++ b/sqlmesh/dbt/common.py @@ -46,7 +46,9 @@ def load_yaml(source: str | Path) -> t.Dict: raise ConfigError(f"{source}: {ex}" if isinstance(source, Path) else f"{ex}") -def parse_meta(v: t.Dict[str, t.Any]) -> t.Dict[str, t.Any]: +def parse_meta(v: t.Optional[t.Dict[str, t.Any]]) -> t.Dict[str, t.Any]: + if v is None: + return {} for key, value in v.items(): if isinstance(value, str): v[key] = try_str_to_bool(value) @@ -115,7 +117,7 @@ def _validate_list(cls, v: t.Union[str, t.List[str]]) -> t.List[str]: @field_validator("meta", mode="before") @classmethod - def _validate_meta(cls, v: t.Dict[str, t.Union[str, t.Any]]) -> t.Dict[str, t.Any]: + def _validate_meta(cls, v: t.Optional[t.Dict[str, t.Union[str, t.Any]]]) -> t.Dict[str, t.Any]: return parse_meta(v) _FIELD_UPDATE_STRATEGY: t.ClassVar[t.Dict[str, UpdateStrategy]] = { diff --git a/tests/fixtures/dbt/sushi_test/models/schema.yml b/tests/fixtures/dbt/sushi_test/models/schema.yml index 21985f19ff..24b1d4b3ee 100644 --- a/tests/fixtures/dbt/sushi_test/models/schema.yml +++ b/tests/fixtures/dbt/sushi_test/models/schema.yml @@ -91,8 +91,14 @@ sources: schema: raw tables: - name: items + config: + meta: - name: orders + config: + meta: - name: order_items + config: + meta: freshness: warn_after: {count: 10, period: hour} error_after: {count: 11, period: hour}