File tree Expand file tree Collapse file tree 1 file changed +12
-0
lines changed
Expand file tree Collapse file tree 1 file changed +12
-0
lines changed Original file line number Diff line number Diff line change @@ -115,6 +115,16 @@ def _resolve_dependencies(self):
115115 dependencies [name ].add (token )
116116 return dependencies
117117
118+ def _check_for_cycles (self ):
119+ graph = nx .DiGraph ()
120+ for name , deps in self ._resolve_dependencies ().items ():
121+ for dep in deps :
122+ graph .add_edge (dep , name )
123+ try :
124+ list (nx .topological_sort (graph ))
125+ except nx .NetworkXUnfeasible :
126+ raise ValueError ("Cycle detected in alias dependencies" )
127+
118128 def plot_alias_dependencies (self ):
119129 deps = self ._resolve_dependencies ()
120130 G = nx .DiGraph ()
@@ -129,6 +139,7 @@ def plot_alias_dependencies(self):
129139
130140 def _topological_sort (self ):
131141 from collections import defaultdict , deque
142+ self ._check_for_cycles ()
132143 dependencies = self ._resolve_dependencies ()
133144 reverse_deps = defaultdict (set )
134145 indegree = defaultdict (int )
@@ -227,6 +238,7 @@ def build_graph():
227238 return added
228239
229240 def materialize_all (self ):
241+ self ._check_for_cycles ()
230242 for name in self .aliases :
231243 self .materialize_alias (name )
232244
You can’t perform that action at this time.
0 commit comments