From 956c47625c3268c280f1098eff74762929a34188 Mon Sep 17 00:00:00 2001 From: Nicola Soranzo Date: Thu, 11 Nov 2021 10:44:10 +0100 Subject: [PATCH] Fix `WorkflowProgress.replacement_for_connection()` typing The code wouldn't currently work if `replacement` is a `DatasetCollection` because it tries to access the `collection` attribute which is available only for `HistoryDatasetCollectionAssociation`. --- lib/galaxy/workflow/run.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/galaxy/workflow/run.py b/lib/galaxy/workflow/run.py index b6145c1110a2..23def8818a08 100644 --- a/lib/galaxy/workflow/run.py +++ b/lib/galaxy/workflow/run.py @@ -328,15 +328,16 @@ def replacement_for_connection(self, connection, is_data=True): delayed_why = f"dependent collection [{replacement.id}] not yet populated with datasets" raise modules.DelayedWorkflowEvaluation(why=delayed_why) - data_inputs = (model.HistoryDatasetAssociation, model.HistoryDatasetCollectionAssociation, model.DatasetCollection) - if not is_data and isinstance(replacement, data_inputs): + if isinstance(replacement, model.DatasetCollection): + raise NotImplementedError + if not is_data and isinstance(replacement, (model.HistoryDatasetAssociation, model.HistoryDatasetCollectionAssociation)): if isinstance(replacement, model.HistoryDatasetAssociation): if replacement.is_pending: raise modules.DelayedWorkflowEvaluation() if not replacement.is_ok: raise modules.CancelWorkflowEvaluation() else: - if not replacement.collection.populated: # type: ignore + if not replacement.collection.populated: raise modules.DelayedWorkflowEvaluation() pending = False for dataset_instance in replacement.dataset_instances: