[engine] Noop only a cyclic dependency, and not an entire Node
Review Request #3478 - Created Feb. 18, 2016 and submitted
|benjyw, ity, jsirois, kwlzn, patricklaw, peiyu|
Rather than failing an entire Node when it attempts to introduce a cyclic dependency, we now fail only the cyclic dependency. To avoid actually introducing cyclic dependencies into the graph, we store them independently, for use by consumers that understand them.
The effect of this change is that rather than immediately failing, the Node that requested the cyclic dependency might still be able to succeed via 1) some other source of the dependency, 2) the dependency being optional.
- Store cyclic dependencies independently, and provide them to Step rather than immediately failing the requesting Node
- Delete the
StructAddressclass, which existed only to work-around the current cycle handling
- Mark Noops white in the visualizer* (*in cases where they're actually rendered... for example, by passing
lambda _: Trueas the walk predicate)
update with green CI post-isort