@@ -309,37 +309,24 @@ def sqlmesh_model_kwargs(
309309 self ,
310310 context : DbtContext ,
311311 column_types_override : t .Optional [t .Dict [str , ColumnConfig ]] = None ,
312+ extra_dependencies : t .Optional [Dependencies ] = None ,
312313 ) -> t .Dict [str , t .Any ]:
313314 """Get common sqlmesh model parameters"""
314315 self .remove_tests_with_invalid_refs (context )
315316 self .check_for_circular_test_refs (context )
317+
318+ dependencies = self .dependencies
319+ if extra_dependencies :
320+ dependencies = dependencies .union (extra_dependencies )
321+
316322 model_dialect = self .dialect (context )
317323 model_context = context .context_for_dependencies (
318- self . dependencies .union (self .tests_ref_source_dependencies )
324+ dependencies .union (self .tests_ref_source_dependencies )
319325 )
320326 jinja_macros = model_context .jinja_macros .trim (
321- self .dependencies .macros , package = self .package_name
322- )
323-
324- model_node : AttributeDict [str , t .Any ] = AttributeDict (
325- {
326- k : v
327- for k , v in context ._manifest ._manifest .nodes [self .node_name ].to_dict ().items ()
328- if k in self .dependencies .model_attrs
329- }
330- if context ._manifest and self .node_name in context ._manifest ._manifest .nodes
331- else {}
332- )
333-
334- jinja_macros .add_globals (
335- {
336- "this" : self .relation_info ,
337- "model" : model_node ,
338- "schema" : self .table_schema ,
339- "config" : self .config_attribute_dict ,
340- ** model_context .jinja_globals , # type: ignore
341- }
327+ dependencies .macros , package = self .package_name
342328 )
329+ jinja_macros .add_globals (self ._model_jinja_context (model_context , dependencies ))
343330 return {
344331 "audits" : [(test .name , {}) for test in self .tests ],
345332 "columns" : column_types_to_sqlmesh (
@@ -369,3 +356,28 @@ def to_sqlmesh(
369356 virtual_environment_mode : VirtualEnvironmentMode = VirtualEnvironmentMode .default ,
370357 ) -> Model :
371358 """Convert DBT model into sqlmesh Model"""
359+
360+ def _model_jinja_context (
361+ self , context : DbtContext , dependencies : Dependencies
362+ ) -> t .Dict [str , t .Any ]:
363+ model_node : AttributeDict [str , t .Any ] = AttributeDict (
364+ {
365+ k : v
366+ for k , v in context ._manifest ._manifest .nodes [self .node_name ].to_dict ().items ()
367+ if k in dependencies .model_attrs
368+ }
369+ if context ._manifest and self .node_name in context ._manifest ._manifest .nodes
370+ else {}
371+ )
372+ return {
373+ "this" : self .relation_info ,
374+ "model" : model_node ,
375+ "schema" : self .table_schema ,
376+ "config" : self .config_attribute_dict ,
377+ ** context .jinja_globals ,
378+ }
379+
380+ def _track_dependencies_on_render (self , input : str , context : DbtContext ) -> Dependencies :
381+ return context .track_dependencies_on_render (
382+ input , self ._model_jinja_context (context , self .dependencies ), self .package_name
383+ )
0 commit comments