@@ -128,7 +128,7 @@ def _is_metadata_macro(name: str, appears_in_metadata_expression: bool) -> bool:
128128
129129 var_name = args [0 ].this .lower ()
130130 used_variables [var_name ] = _is_metadata_var (
131- name , macro_func_or_var , is_metadata
131+ var_name , macro_func_or_var , is_metadata
132132 )
133133 elif id (macro_func_or_var ) not in visited_macro_funcs :
134134 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:
138138 visited_macro_funcs .update (_visited_macro_funcs )
139139 outermost_macro_func_ancestor_by_var |= {var_ref : name for var_ref in var_refs }
140140 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+ )
146151 elif (
147152 isinstance (macro_func_or_var , (exp .Identifier , d .MacroStrReplace , d .MacroSQL ))
148153 ) and "@" in macro_func_or_var .name :
@@ -249,6 +254,12 @@ def _add_variables_to_python_env(
249254
250255 non_metadata_used_variables = set (used_variables ) - metadata_used_variables
251256
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+
252263 metadata_variables = {
253264 k : v for k , v in (variables or {}).items () if k in metadata_used_variables
254265 }
0 commit comments