Skip to content

Commit 3aae8ee

Browse files
author
miranov25
committed
fixed - Circular dependency detection
1 parent 6561696 commit 3aae8ee

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

UTILS/dfextensions/AliasDataFrame.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff 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

0 commit comments

Comments
 (0)