Merge branch 'release_20.05' into release_20.09

This commit is contained in:
mvdbeek
2020-11-05 18:58:07 +01:00
2 changed files with 33 additions and 20 deletions
+10 -20
View File
@@ -15,6 +15,7 @@ from galaxy.tools.parameters.grouping import (
Repeat,
Section
)
from galaxy.util import listify
from .steps import (
attach_ordered_steps,
order_workflow_steps_with_levels
@@ -54,18 +55,9 @@ def extract_workflow(trans, user, history=None, job_ids=None, dataset_ids=None,
def extract_steps(trans, history=None, job_ids=None, dataset_ids=None, dataset_collection_ids=None, dataset_names=None, dataset_collection_names=None):
# Ensure job_ids and dataset_ids are lists (possibly empty)
if job_ids is None:
job_ids = []
elif type(job_ids) is not list:
job_ids = [job_ids]
if dataset_ids is None:
dataset_ids = []
elif type(dataset_ids) is not list:
dataset_ids = [dataset_ids]
if dataset_collection_ids is None:
dataset_collection_ids = []
elif type(dataset_collection_ids) is not list:
dataset_collection_ids = [dataset_collection_ids]
job_ids = listify(job_ids)
dataset_ids = listify(dataset_ids)
dataset_collection_ids = listify(dataset_collection_ids)
# Convert both sets of ids to integers
job_ids = [int(_) for _ in job_ids]
dataset_ids = [int(_) for _ in dataset_ids]
@@ -328,18 +320,16 @@ def __cleanup_param_values(inputs, values):
def cleanup(prefix, inputs, values):
for key, input in inputs.items():
if isinstance(input, DataToolParameter) or isinstance(input, DataCollectionToolParameter):
tmp = values[key]
items = values[key]
values[key] = None
# HACK: Nested associations are not yet working, but we
# still need to clean them up so we can serialize
# if not( prefix ):
if isinstance(tmp, model.DatasetCollectionElement):
tmp = tmp.first_dataset_instance()
if tmp: # this is false for a non-set optional dataset
if not isinstance(tmp, list):
associations.append((tmp.hid, prefix + key))
else:
associations.extend([(t.hid, prefix + key) for t in tmp])
for item in listify(items):
if isinstance(item, model.DatasetCollectionElement):
item = item.first_dataset_instance()
if item: # this is false for a non-set optional dataset
associations.append((item.hid, prefix + key))
# Cleanup the other deprecated crap associated with datasets
# as well. Worse, for nested datasets all the metadata is
@@ -251,6 +251,29 @@ test_data:
collection_step_state = loads(collection_step["tool_state"])
self.assertEqual(collection_step_state["collection_type"], "list:paired")
@skip_without_tool("cat_list")
@skip_without_tool("collection_creates_dynamic_nested")
def test_subcollection_reduction(self):
jobs_summary = self._run_jobs("""
class: GalaxyWorkflow
steps:
creates_nested_list:
tool_id: collection_creates_dynamic_nested
reduce_nested_list:
tool_id: cat_list
in:
input1: creates_nested_list/list_output
""")
job1_id = self._job_id_for_tool(jobs_summary.jobs, "cat_list")
job2_id = self._job_id_for_tool(jobs_summary.jobs, "collection_creates_dynamic_nested")
self._extract_and_download_workflow(
reimport_as="test_extract_workflows_with_subcollection_reduction",
dataset_collection_ids=["1"],
job_ids=[job1_id, job2_id],
)
# TODO: refactor workflow extraction to not rely on HID, so we can actually properly connect
# this workflow
@skip_without_tool("collection_split_on_column")
def test_extract_workflow_with_output_collections(self):
jobs_summary = self._run_jobs("""