From 13132050c693ab0739e641685c4a371e0ed57404 Mon Sep 17 00:00:00 2001 From: Themis Valtinos <73662635+themisvaltinos@users.noreply.github.com> Date: Tue, 15 Apr 2025 12:32:11 +0300 Subject: [PATCH 1/2] Fix: Handle macros in model properties when formatting --- sqlmesh/core/dialect.py | 5 ++++- tests/core/test_dialect.py | 8 ++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/sqlmesh/core/dialect.py b/sqlmesh/core/dialect.py index dcdacf4b2a..3bc56016d0 100644 --- a/sqlmesh/core/dialect.py +++ b/sqlmesh/core/dialect.py @@ -634,7 +634,10 @@ def _props_sql(self: Generator, expressions: t.List[exp.Expression]) -> str: size = len(expressions) for i, prop in enumerate(expressions): - sql = self.indent(f"{prop.name} {self.sql(prop, 'value')}") + if isinstance(prop, MacroFunc): + sql = self.indent(f"{self.sql(prop, comment=False)}") + else: + sql = self.indent(f"{prop.name} {self.sql(prop, 'value')}") if i < size - 1: sql += "," diff --git a/tests/core/test_dialect.py b/tests/core/test_dialect.py index f96d10851a..19b01d70a1 100644 --- a/tests/core/test_dialect.py +++ b/tests/core/test_dialect.py @@ -26,6 +26,7 @@ def test_format_model_expressions(): a, (b, c) as d, ), -- c + @macro_prop_with_comment(proper := 'foo'), -- k audits [ not_null(columns=[ foo_id, @@ -91,6 +92,7 @@ def test_format_model_expressions(): name a.b, /* a */ kind FULL, /* b */ references (a, (b, c) AS d), /* c */ + @macro_prop_with_comment(proper := 'foo'), /* k */ audits ARRAY( NOT_NULL( columns = ARRAY( @@ -269,7 +271,7 @@ def test_format_body_macros(): format_model_expressions( parse( """ - Model ( name foo ); + Model ( name foo , @macro_dialect(), @properties_macro(prop_1 := 'max', prop_2 := 33)); @WITH(TRUE) x AS (SELECT 1) SELECT col::int FROM foo @@ -281,7 +283,9 @@ def test_format_body_macros(): ) ) == """MODEL ( - name foo + name foo, + @macro_dialect(), + @properties_macro(prop_1 := 'max', prop_2 := 33) ); @WITH(TRUE) x AS ( From 1661fc8518c13f28e1132e2e4f059d5e6f85cdb6 Mon Sep 17 00:00:00 2001 From: Themis Valtinos <73662635+themisvaltinos@users.noreply.github.com> Date: Tue, 15 Apr 2025 14:22:59 +0300 Subject: [PATCH 2/2] refactor --- sqlmesh/core/dialect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sqlmesh/core/dialect.py b/sqlmesh/core/dialect.py index 3bc56016d0..f3cc64ce96 100644 --- a/sqlmesh/core/dialect.py +++ b/sqlmesh/core/dialect.py @@ -635,7 +635,7 @@ def _props_sql(self: Generator, expressions: t.List[exp.Expression]) -> str: for i, prop in enumerate(expressions): if isinstance(prop, MacroFunc): - sql = self.indent(f"{self.sql(prop, comment=False)}") + sql = self.indent(self.sql(prop, comment=False)) else: sql = self.indent(f"{prop.name} {self.sql(prop, 'value')}")