Return apply nodes of `expr` sub-tree as a list in topological order. Raises networkx.NetworkXUnfeasible if subtree contains cycle.
(expr)
| 690 | |
| 691 | |
| 692 | def toposort(expr): |
| 693 | """ |
| 694 | Return apply nodes of `expr` sub-tree as a list in topological order. |
| 695 | |
| 696 | Raises networkx.NetworkXUnfeasible if subtree contains cycle. |
| 697 | |
| 698 | """ |
| 699 | G = nx.DiGraph() |
| 700 | for node in dfs(expr): |
| 701 | G.add_edges_from([(n_in, node) for n_in in node.inputs()]) |
| 702 | order = list(nx.topological_sort(G)) |
| 703 | assert order[-1] == expr |
| 704 | return order |
| 705 | |
| 706 | |
| 707 | def clone(expr, memo=None): |
no test coverage detected