Skip to content

Commit 5295e46

Browse files
committed
fixed up LazyField._resolve_value to handle combine states after switching to state indices
1 parent c7ad6b2 commit 5295e46

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

pydra/engine/lazy.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -192,12 +192,15 @@ def retrieve_from_job(job: "Task[DefType]") -> ty.Any:
192192
elif not self._node.state.keys_final: # all states are combined over
193193
return [retrieve_from_job(j) for j in jobs]
194194
elif self._node.state.combiner:
195-
values = StateArray()
196-
for ind in self._node.state.states_ind_final:
197-
values.append(
198-
[retrieve_from_job(j) for j in jobs if j.state_index.matches(ind)]
199-
)
200-
return values
195+
sorted_values = {
196+
frozenset(i.items()): [] for i in self._node.state.states_ind_final
197+
}
198+
assert len(jobs) == len(self._node.state.inputs_ind)
199+
for ind, job in zip(self._node.state.inputs_ind, jobs):
200+
sorted_values[
201+
frozenset((key, ind[key]) for key in self._node.state.keys_final)
202+
].append(retrieve_from_job(job))
203+
return StateArray(sorted_values.values())
201204
else:
202205
return StateArray(retrieve_from_job(j) for j in jobs)
203206

0 commit comments

Comments
 (0)