@@ -293,36 +293,23 @@ def sqlmesh_model_kwargs(
293293 self ,
294294 context : DbtContext ,
295295 column_types_override : t .Optional [t .Dict [str , ColumnConfig ]] = None ,
296+ extra_dependencies : t .Optional [Dependencies ] = None ,
296297 ) -> t .Dict [str , t .Any ]:
297298 """Get common sqlmesh model parameters"""
298299 self .check_for_circular_test_refs (context )
300+
301+ dependencies = self .dependencies
302+ if extra_dependencies :
303+ dependencies = dependencies .union (extra_dependencies )
304+
299305 model_dialect = self .dialect (context )
300306 model_context = context .context_for_dependencies (
301- self . dependencies .union (self .tests_ref_source_dependencies )
307+ dependencies .union (self .tests_ref_source_dependencies )
302308 )
303309 jinja_macros = model_context .jinja_macros .trim (
304- self .dependencies .macros , package = self .package_name
305- )
306-
307- model_node : AttributeDict [str , t .Any ] = AttributeDict (
308- {
309- k : v
310- for k , v in context ._manifest ._manifest .nodes [self .node_name ].to_dict ().items ()
311- if k in self .dependencies .model_attrs
312- }
313- if context ._manifest and self .node_name in context ._manifest ._manifest .nodes
314- else {}
315- )
316-
317- jinja_macros .add_globals (
318- {
319- "this" : self .relation_info ,
320- "model" : model_node ,
321- "schema" : self .table_schema ,
322- "config" : self .config_attribute_dict ,
323- ** model_context .jinja_globals , # type: ignore
324- }
310+ dependencies .macros , package = self .package_name
325311 )
312+ jinja_macros .add_globals (self ._model_jinja_context (model_context , dependencies ))
326313 return {
327314 "audits" : [(test .name , {}) for test in self .tests ],
328315 "columns" : column_types_to_sqlmesh (
@@ -352,3 +339,28 @@ def to_sqlmesh(
352339 virtual_environment_mode : VirtualEnvironmentMode = VirtualEnvironmentMode .default ,
353340 ) -> Model :
354341 """Convert DBT model into sqlmesh Model"""
342+
343+ def _model_jinja_context (
344+ self , context : DbtContext , dependencies : Dependencies
345+ ) -> t .Dict [str , t .Any ]:
346+ model_node : AttributeDict [str , t .Any ] = AttributeDict (
347+ {
348+ k : v
349+ for k , v in context ._manifest ._manifest .nodes [self .node_name ].to_dict ().items ()
350+ if k in dependencies .model_attrs
351+ }
352+ if context ._manifest and self .node_name in context ._manifest ._manifest .nodes
353+ else {}
354+ )
355+ return {
356+ "this" : self .relation_info ,
357+ "model" : model_node ,
358+ "schema" : self .table_schema ,
359+ "config" : self .config_attribute_dict ,
360+ ** context .jinja_globals ,
361+ }
362+
363+ def _track_dependencies_on_render (self , input : str , context : DbtContext ) -> Dependencies :
364+ return context .track_dependencies_on_render (
365+ input , self ._model_jinja_context (context , self .dependencies ), self .package_name
366+ )
0 commit comments