@@ -544,14 +544,14 @@ def update_schema(
544544 {col : dtype .sql (dialect = self .dialect ) for col , dtype in mapping_schema .items ()},
545545 )
546546
547- @property
547+ @cached_property
548548 def depends_on (self ) -> t .Set [str ]:
549549 """All of the upstream dependencies referenced in the model's query, excluding self references.
550550
551551 Returns:
552552 A list of all the upstream table names.
553553 """
554- return self .depends_on_ or set ()
554+ return self ._full_depends_on - { self . fqn }
555555
556556 @property
557557 def columns_to_types (self ) -> t .Optional [t .Dict [str , exp .DataType ]]:
@@ -617,13 +617,7 @@ def is_seed(self) -> bool:
617617 def depends_on_past (self ) -> bool :
618618 if self .kind .is_incremental_by_unique_key :
619619 return True
620-
621- query = self .render_query (optimize = False )
622- if query is None :
623- return False
624- return self .fqn in d .find_tables (
625- query , default_catalog = self .default_catalog , dialect = self .dialect
626- )
620+ return self .fqn in self ._full_depends_on
627621
628622 @property
629623 def forward_only (self ) -> bool :
@@ -811,6 +805,18 @@ def is_model(self) -> bool:
811805 def _additional_metadata (self ) -> t .List [str ]:
812806 return []
813807
808+ @cached_property
809+ def _full_depends_on (self ) -> t .Set [str ]:
810+ depends_on = self .depends_on_ or set ()
811+
812+ query = self .render_query (optimize = False )
813+ if query is not None :
814+ depends_on |= d .find_tables (
815+ query , default_catalog = self .default_catalog , dialect = self .dialect
816+ )
817+
818+ return depends_on
819+
814820
815821class _SqlBasedModel (_Model ):
816822 pre_statements_ : t .Optional [t .List [exp .Expression ]] = Field (
@@ -982,19 +988,6 @@ def render_definition(self, include_python: bool = True) -> t.List[exp.Expressio
982988 def is_sql (self ) -> bool :
983989 return True
984990
985- @cached_property
986- def depends_on (self ) -> t .Set [str ]:
987- depends_on = self .depends_on_ or set ()
988-
989- query = self .render_query (optimize = False )
990- if query is not None :
991- depends_on |= d .find_tables (
992- query , default_catalog = self .default_catalog , dialect = self .dialect
993- )
994-
995- depends_on -= {self .fqn }
996- return depends_on
997-
998991 @property
999992 def columns_to_types (self ) -> t .Optional [t .Dict [str , exp .DataType ]]:
1000993 if self .columns_to_types_ is not None :
@@ -1225,6 +1218,10 @@ def seed_path(self) -> Path:
12251218 return self ._path .parent / seed_path
12261219 return seed_path
12271220
1221+ @cached_property
1222+ def depends_on (self ) -> t .Set [str ]:
1223+ return (self .depends_on_ or set ()) - {self .fqn }
1224+
12281225 @property
12291226 def depends_on_past (self ) -> bool :
12301227 return False
@@ -1379,6 +1376,14 @@ def is_breaking_change(self, previous: Model) -> t.Optional[bool]:
13791376 return False
13801377 return None
13811378
1379+ @property
1380+ def depends_on (self ) -> t .Set [str ]:
1381+ return set ()
1382+
1383+ @property
1384+ def depends_on_past (self ) -> bool :
1385+ return False
1386+
13821387
13831388Model = t .Union [SqlModel , SeedModel , PythonModel , ExternalModel ]
13841389
0 commit comments