@@ -97,27 +97,15 @@ def quote(self, identifier: str) -> str:
9797
9898 def dispatch (self , name : str , package : t .Optional [str ] = None ) -> t .Callable :
9999 """Returns a dialect-specific version of a macro with the given name."""
100- package = package or "dbt"
101100 target_type = self .jinja_globals ["target" ]["type" ]
102- macro_suffix = f"__{ name } "
103-
104- def _relevance (macro : MacroReference ) -> int :
105- """Lower scores more relevant."""
106- if macro .name .startswith ("default" ):
107- return 2
108- elif macro .name .startswith (target_type ):
109- return 0
110- return 1
111-
112- macros = [
113- MacroReference (package = macro_package , name = macro_name )
114- for macro_package , macros in self .jinja_macros .packages .items ()
115- if (macro_package == package ) or (package == "dbt" and macro_package .startswith ("dbt_" ))
116- for macro_name in macros .keys ()
117- if macro_name .endswith (macro_suffix )
101+ references_to_try = [
102+ MacroReference (package = f"{ package } _{ target_type } " , name = f"{ target_type } __{ name } " ),
103+ MacroReference (package = package , name = f"{ target_type } __{ name } " ),
104+ MacroReference (package = package , name = f"default__{ name } " ),
118105 ]
119- for macro in sorted (macros , key = _relevance ):
120- macro_callable = self .jinja_macros .build_macro (macro , ** self .jinja_globals )
106+
107+ for reference in references_to_try :
108+ macro_callable = self .jinja_macros .build_macro (reference , ** self .jinja_globals )
121109 if macro_callable is not None :
122110 return macro_callable
123111
0 commit comments