You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Pipeline.get_linked_items() does not behave the same way when used on a regular (leaf) process or on a sub-pipeline inside the main pipeline. direction is not handled the same way:
a terminal Process will thus yield its external links, while a sub-pipeline will provide only its internal links.
So other nodes plugs connected to a sub-pipeline will not be reached from it. As a consequence, dispatch_plugs() and dispatch_value() miss some connections and actually do not dispatch to all nodes as it should.
We could use in_outer_pipelines=True, but this will also propagate to other connected sub-pipeline, which is not always what we want.
There is at least a "meaning" ambiguity on this method, it behaves differently on terminal processed and pipelines, differently depending on direction, in_sub_pipelines and in_outer_pipelines which makes its behaviour quite difficult to apprehend. And the doc currently says nothing about all this, so we don't really know what is the expected behaviour in each case.
The text was updated successfully, but these errors were encountered:
We should maybe define clear use cases for this function:
a. get processes/plugs connected to an outside plug of the main pipeline
b. get processes/plugs inside a sub-pipeline connected to a sub-pipeline plug (maybe this is the same as case a. by using sub_pipeline.get_linked_items()) ?)
c. get processes/plugs connected to a node plug in a pipeline (whatever its type), not going inside other sub-pipelines (sub-pipelines are treated as regular black-box processes here)
d. get processes/plugs connected to a node plug in a pipeline (whatever its type), going inside other sub-pipelines
(do I forget other useful use cases ?)
and provide the correct set of parameters go get the expected behaviour.
Pipeline.get_linked_items() does not behave the same way when used on a regular (leaf) process or on a sub-pipeline inside the main pipeline. direction is not handled the same way:
a terminal Process will thus yield its external links, while a sub-pipeline will provide only its internal links.
So other nodes plugs connected to a sub-pipeline will not be reached from it. As a consequence,
dispatch_plugs()
anddispatch_value()
miss some connections and actually do not dispatch to all nodes as it should.We could use
in_outer_pipelines=True
, but this will also propagate to other connected sub-pipeline, which is not always what we want.There is at least a "meaning" ambiguity on this method, it behaves differently on terminal processed and pipelines, differently depending on
direction
,in_sub_pipelines
andin_outer_pipelines
which makes its behaviour quite difficult to apprehend. And the doc currently says nothing about all this, so we don't really know what is the expected behaviour in each case.The text was updated successfully, but these errors were encountered: