@@ -128,7 +128,7 @@ def _is_metadata_macro(name: str, appears_in_metadata_expression: bool) -> bool:
128
128
129
129
var_name = args [0 ].this .lower ()
130
130
used_variables [var_name ] = _is_metadata_var (
131
- name , macro_func_or_var , is_metadata
131
+ var_name , macro_func_or_var , is_metadata
132
132
)
133
133
elif id (macro_func_or_var ) not in visited_macro_funcs :
134
134
var_refs , _expr_under_metadata_macro_func , _visited_macro_funcs = (
@@ -138,11 +138,16 @@ def _is_metadata_macro(name: str, appears_in_metadata_expression: bool) -> bool:
138
138
visited_macro_funcs .update (_visited_macro_funcs )
139
139
outermost_macro_func_ancestor_by_var |= {var_ref : name for var_ref in var_refs }
140
140
elif macro_func_or_var .__class__ is d .MacroVar :
141
- name = macro_func_or_var .name .lower ()
142
- if name in macros :
143
- used_macros [name ] = (macros [name ], _is_metadata_macro (name , is_metadata ))
144
- elif name in variables or name in blueprint_variables :
145
- used_variables [name ] = _is_metadata_var (name , macro_func_or_var , is_metadata )
141
+ var_name = macro_func_or_var .name .lower ()
142
+ if var_name in macros :
143
+ used_macros [var_name ] = (
144
+ macros [var_name ],
145
+ _is_metadata_macro (var_name , is_metadata ),
146
+ )
147
+ elif var_name in variables or var_name in blueprint_variables :
148
+ used_variables [var_name ] = _is_metadata_var (
149
+ var_name , macro_func_or_var , is_metadata
150
+ )
146
151
elif (
147
152
isinstance (macro_func_or_var , (exp .Identifier , d .MacroStrReplace , d .MacroSQL ))
148
153
) and "@" in macro_func_or_var .name :
@@ -249,6 +254,12 @@ def _add_variables_to_python_env(
249
254
250
255
non_metadata_used_variables = set (used_variables ) - metadata_used_variables
251
256
257
+ if overlapping_variables := (non_metadata_used_variables & metadata_used_variables ):
258
+ raise ConfigError (
259
+ f"Variables { ', ' .join (overlapping_variables )} are both metadata and non-metadata, "
260
+ "which is unexpected. Please file an issue at https://github.com/TobikoData/sqlmesh/issues/new."
261
+ )
262
+
252
263
metadata_variables = {
253
264
k : v for k , v in (variables or {}).items () if k in metadata_used_variables
254
265
}
0 commit comments