(self, start: Node, *, forwards: bool)
| 137 | return self._iterative_dfs(self.node_map[target], forwards=False) |
| 138 | |
| 139 | def _iterative_dfs(self, start: Node, *, forwards: bool) -> list[MigrationKey]: |
| 140 | visited: list[MigrationKey] = [] |
| 141 | visited_set: set[Node] = set() |
| 142 | stack: list[tuple[Node, bool]] = [(start, False)] |
| 143 | while stack: |
| 144 | node, processed = stack.pop() |
| 145 | if node in visited_set: |
| 146 | continue |
| 147 | if processed: |
| 148 | visited_set.add(node) |
| 149 | visited.append(node.key) |
| 150 | continue |
| 151 | stack.append((node, True)) |
| 152 | neighbors = node.parents if forwards else node.children |
| 153 | stack.extend((n, False) for n in sorted(neighbors)) |
| 154 | return visited |
no test coverage detected