Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The previous workflow Module interface would more or less persist Galaxy's "Tool State" directly into the database. The tool state framework persists state in an un-typed fashion (e.g. the optional value for data inputs would be 'True' instead of True). The Format 2 YAML that we would like to publish to Galaxy and export from Galaxy would much more cleanly represent this as actual boolean values.
The problem gets even worse with parameter inputs where we want the default value to be settable only if optional is True. This requires a conditional in the "Tool Form" language - so the persisted value would be nested structures without typing. For instance - instead of
{default: 5, parameter_type: "integer", "optional": true}
that we might want to store into the database or read from a workflow definition file, the framework would require something like{"parameter_type": "integer", "parameter_definition": {"optional": {"optional": "True", {"specify_default": {"specify_default": "True", "default": "5"}}}}}
.My preference may have been to have plugins defined in the client that just produce the minimal JSON - but I didn't know how to implement that and Sam's preference was that the client use the tool form framework for everything on the side panel anyway though.
As a result, this commit adds abstractions to separate module tool state (for communicating with client and tied to tool form rendering) from abstract export state - loaded from the API when not coming from the tool and stored in database.
To summarize workflow module interface changes...
More expansive, cleaned up version of #8807 (and #8232) - work stemming from the CWL branch of Galaxy. Implements #7775, #8218, #8576. xref #1325. Needed for #9030.