Skip to content

Commit 254db54

Browse files
guerlerclaude
andcommitted
Handle sub-collection DCE dereference during mapped job rerun
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent bf2f7c7 commit 254db54

2 files changed

Lines changed: 10 additions & 7 deletions

File tree

lib/galaxy/managers/jobs.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2178,15 +2178,16 @@ def dereference_callback(data_request: DataRequestUri) -> DataRequestInternalHda
21782178
new_hdas.append(DereferencedDatasetPair(hda, data_request))
21792179
return DataRequestInternalHda(id=hda.id, src="hda")
21802180

2181-
def dereference_dce_callback(data_request: DataRequestInternalDce) -> DataRequestInternalHda:
2181+
def dereference_dce_callback(
2182+
data_request: DataRequestInternalDce,
2183+
) -> Optional[DataRequestInternalHda]:
21822184
dce = trans.sa_session.get(model.DatasetCollectionElement, data_request.id)
21832185
if dce is None:
21842186
raise RequestParameterInvalidException(f"Dataset collection element {data_request.id} not found")
21852187
hda = dce.hda
21862188
if hda is None:
2187-
raise RequestParameterInvalidException(
2188-
f"Dataset collection element {data_request.id} does not reference a dataset"
2189-
)
2189+
# Sub-collection DCE, pass through for collection parameter expansion
2190+
return None
21902191
return DataRequestInternalHda(id=hda.id, src="hda")
21912192

21922193
tool_state = RequestInternalToolState(tool_request.request)

lib/galaxy/tool_util/parameters/convert.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
EncodeFunctionT = Callable[[int], str]
7272
DereferenceCallable = Callable[[DataRequestUri], DataRequestInternalHda]
7373
DereferenceCollectionCallable = Callable[[DataRequestCollectionUri], DataRequestInternalHdca]
74-
DereferenceDceCallable = Callable[[DataRequestInternalDce], DataRequestInternalHda]
74+
DereferenceDceCallable = Callable[[DataRequestInternalDce], Optional[DataRequestInternalHda]]
7575
# interfaces for adapting test data dictionaries to tool request dictionaries
7676
# e.g. {class: File, path: foo.bed} => {src: hda, id: ab1235cdfea3}
7777
AdaptDatasets = Callable[[JsonTestDatasetDefDict], DataRequestHda]
@@ -244,8 +244,10 @@ def dereference_dict(src_dict: dict):
244244
return data_request_hdca.model_dump()
245245
elif src == "dce" and dereference_dce is not None:
246246
data_request_dce: DataRequestInternalDce = DataRequestInternalDce.model_validate(src_dict)
247-
data_request_hda_from_dce: DataRequestInternalHda = dereference_dce(data_request_dce)
248-
return data_request_hda_from_dce.model_dump()
247+
data_request_hda_from_dce = dereference_dce(data_request_dce)
248+
if data_request_hda_from_dce is not None:
249+
return data_request_hda_from_dce.model_dump()
250+
return src_dict
249251
else:
250252
return src_dict
251253

0 commit comments

Comments
 (0)