We are already constrained to flat DAGs by PWD's limitations, but in the process of working over in PWD, I re-discovered that PWD is restricted to single-return atomic nodes, and gets multiple output ports by assuming that underlying functions return a dictionary with keys corresponding to the port labels. This is an underlying assumption the WfMS and recipe-referenced functions must adhere to, and is incompatible with the corresponding flowrep assumption that function outputs are treated singularly (in the case of a single output port) or that there is a standard python return tuple whose length matches the number of ports.
Corresponding discussion on PWD: pythonworkflow/python-workflow-definition#197
So what is needed here is to fail cleanly during the conversion if any of the atomic nodes have multiple outputs. A more complex conversion that supports them is, in principle, possible, but I don't want to implement it right now.
We are already constrained to flat DAGs by PWD's limitations, but in the process of working over in PWD, I re-discovered that PWD is restricted to single-return atomic nodes, and gets multiple output ports by assuming that underlying functions return a dictionary with keys corresponding to the port labels. This is an underlying assumption the WfMS and recipe-referenced functions must adhere to, and is incompatible with the corresponding flowrep assumption that function outputs are treated singularly (in the case of a single output port) or that there is a standard python return tuple whose length matches the number of ports.
Corresponding discussion on PWD: pythonworkflow/python-workflow-definition#197
So what is needed here is to fail cleanly during the conversion if any of the atomic nodes have multiple outputs. A more complex conversion that supports them is, in principle, possible, but I don't want to implement it right now.