-
Notifications
You must be signed in to change notification settings - Fork 62
Open
Labels
bugSomething isn't workingSomething isn't working
Description
What version of Pydra are you using?
1.0a3
What were you trying to do?:
Running a very simple (nested workflow) like this:
from pydra.define import python, workflow
@python.define
def T1(a):
pass
@python.define
def T2(a):
pass
@python.define
def Step1():
pass
@python.define
def Step2():
pass
@python.define
def Step3(a, b):
pass
# inner workflow:
@workflow.define
def Inner(a):
step1 = workflow.add(Step1().split(a=a).combine("a"))
step2 = workflow.add(Step2().split(("a", "b"), a=a, b=step1.out).combine("a"))
step3 = workflow.add(Step3(step2.out, b=step1.out))
return step3.out
# outer workflow
@workflow.define
def Outer(a, iterations):
initial = workflow.add(T1(a))
more = workflow.add(T2(initial.out))
updates = [workflow.add(Inner(more.out), name="iteration0")]
for i in range(1, iterations):
updates.append(workflow.add(Inner(more.out), name=f"iteration{i}"))
return updates[-1].out
What did you expect will happen?
The workflow should try execute.
What actually happened?
Execution crashed with an internal pydra error:
Traceback (most recent call last):
File "/home/mk/work/src/ANTs-pydra/ants_template_workflow.py", line 262, in <module>
result = submitter(wf)
File "/home/mk/work/src/ANTs-pydra/.venv/lib/python3.13/site-packages/pydra/engine/submitter.py", line 265, in __call__
raise exc
File "/home/mk/work/src/ANTs-pydra/.venv/lib/python3.13/site-packages/pydra/engine/submitter.py", line 257, in __call__
self.submit(job, rerun=rerun)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
File "/home/mk/work/src/ANTs-pydra/.venv/lib/python3.13/site-packages/pydra/engine/submitter.py", line 298, in submit
self.worker.run(job, rerun=rerun)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
File "/home/mk/work/src/ANTs-pydra/.venv/lib/python3.13/site-packages/pydra/workers/debug.py", line 22, in run
return job.run(rerun=rerun)
~~~~~~~^^^^^^^^^^^^^
File "/home/mk/work/src/ANTs-pydra/.venv/lib/python3.13/site-packages/pydra/engine/job.py", line 333, in run
self.task._run(self, rerun)
~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/home/mk/work/src/ANTs-pydra/.venv/lib/python3.13/site-packages/pydra/compose/workflow.py", line 363, in _run
job.submitter.expand_workflow(job, rerun)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
File "/home/mk/work/src/ANTs-pydra/.venv/lib/python3.13/site-packages/pydra/engine/submitter.py", line 331, in expand_workflow
self.worker.run(job, rerun=rerun and self.propagate_rerun)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/mk/work/src/ANTs-pydra/.venv/lib/python3.13/site-packages/pydra/workers/debug.py", line 22, in run
return job.run(rerun=rerun)
~~~~~~~^^^^^^^^^^^^^
File "/home/mk/work/src/ANTs-pydra/.venv/lib/python3.13/site-packages/pydra/engine/job.py", line 333, in run
self.task._run(self, rerun)
~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/home/mk/work/src/ANTs-pydra/.venv/lib/python3.13/site-packages/pydra/compose/workflow.py", line 363, in _run
job.submitter.expand_workflow(job, rerun)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
File "/home/mk/work/src/ANTs-pydra/.venv/lib/python3.13/site-packages/pydra/engine/submitter.py", line 326, in expand_workflow
exec_graph = wf.execution_graph(submitter=self)
File "/home/mk/work/src/ANTs-pydra/.venv/lib/python3.13/site-packages/pydra/engine/workflow.py", line 290, in execution_graph
graph = self._create_graph(exec_nodes)
File "/home/mk/work/src/ANTs-pydra/.venv/lib/python3.13/site-packages/pydra/engine/workflow.py", line 385, in _create_graph
node.state = state.State(
^^^^^^^^^^
AttributeError: property 'state' of 'NodeExecution' object has no setter
A quick fix is to use the internal _state attribute, but I'm sure that's not the intended way.
diff --git a/pydra/engine/workflow.py b/pydra/engine/workflow.py
index c277d502..e1a1f6c7 100644
--- a/pydra/engine/workflow.py
+++ b/pydra/engine/workflow.py
@@ -382,7 +382,7 @@ class Workflow(ty.Generic[WorkflowOutputsType]):
new_other_states=other_states, new_combiner=combiner
)
else:
- node.state = state.State(
+ node._state = state.State(
node.name,
splitter=None,
other_states=other_states,
Let me know if I can provide more details.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working