Merge pull request #14862 from mvdbeek/drop_output_parent

Drop broken output.parent logic
This commit is contained in:
Marius van den Beek
2022-10-26 20:23:23 +02:00
committed by GitHub
2 changed files with 10 additions and 19 deletions
+10 -18
View File
@@ -10,6 +10,7 @@ from typing import (
Dict,
List,
Set,
TYPE_CHECKING,
Union,
)
@@ -32,6 +33,9 @@ from galaxy.tools.parameters.wrapped import WrappedParameters
from galaxy.util import ExecutionTimer
from galaxy.util.template import fill_template
if TYPE_CHECKING:
from galaxy.model import DatasetInstance
log = logging.getLogger(__name__)
@@ -428,7 +432,7 @@ class DefaultToolAction(ToolAction):
# wrapped params are used by change_format action and by output.label; only perform this wrapping once, as needed
wrapped_params = self._wrapped_params(trans, tool, incoming, inp_data)
out_data = {}
out_data: Dict[str, "DatasetInstance"] = {}
input_collections = {k: v[0][0] for k, v in inp_dataset_collections.items()}
output_collections = OutputCollections(
trans,
@@ -445,16 +449,9 @@ class DefaultToolAction(ToolAction):
hdca_tags=preserved_hdca_tags,
)
# Keep track of parent / child relationships, we'll create all the
# datasets first, then create the associations
parent_to_child_pairs = []
child_dataset_names = set()
async_tool = tool.tool_type == "data_source_async"
def handle_output(name, output, hidden=None):
if output.parent:
parent_to_child_pairs.append((output.parent, name))
child_dataset_names.add(name)
if async_tool and name in incoming:
# HACK: output data has already been created as a result of the async controller
dataid = incoming[name]
@@ -543,6 +540,8 @@ class DefaultToolAction(ToolAction):
# Flush all datasets at once.
return data
child_dataset_names = set()
for name, output in tool.outputs.items():
if not filter_output(tool, output, incoming):
handle_output_timer = ExecutionTimer()
@@ -591,13 +590,13 @@ class DefaultToolAction(ToolAction):
)
effective_output_name = output_part_def.effective_output_name
child_dataset_names.add(effective_output_name)
element = handle_output(effective_output_name, output_part_def.output_def, hidden=True)
history.stage_addition(element)
# TODO: this shouldn't exist in the top-level of the history at all
# but for now we are still working around that by hiding the contents
# there.
# Following hack causes dataset to no be added to history...
child_dataset_names.add(effective_output_name)
trans.sa_session.add(element)
current_element_identifiers.append(
{
@@ -625,18 +624,11 @@ class DefaultToolAction(ToolAction):
)
# Add all the top-level (non-child) datasets to the history unless otherwise specified
for name, data in out_data.items():
if (
name not in child_dataset_names and name not in incoming
): # don't add children; or already existing datasets, i.e. async created
if name not in incoming and name not in child_dataset_names:
# don't add already existing datasets, i.e. async created
history.stage_addition(data)
history.add_pending_items(set_output_hid=set_output_hid)
# Add all the children to their parents
for parent_name, child_name in parent_to_child_pairs:
parent_dataset = out_data[parent_name]
child_dataset = out_data[child_name]
parent_dataset.children.append(child_dataset)
log.info(add_datasets_timer)
job_setup_timer = ExecutionTimer()
# Create the job object
@@ -202,7 +202,6 @@ class MockHistoryDatasetAssociation:
self.name = name
self.hid = id
self.id = id
self.children = []
self.tags = []
self.metadata = None