A slightly better example, using the same tasks as above:
t1 = PushTask(lname="meep", thing="t1")
t2 = PushTask(lname="meep", thing="t2")
fw1 = Firework([t1, t2])
t3 = PushTask(lname="meep", thing="t3")
t4 = PushTask(lname="meep", thing="t4")
fw2 = Firework([t3, t4])
t5 = PushTask(lname="meep", thing="t5")
t6 = PushTask(lname="meep", thing="t6")
fw3 = Firework([t5, t6])
t7 = PrintTask()
fw4 = Firework([t7])
wf1 = Workflow([fw1, fw3, fw4], {fw1: [fw3], fw3: [fw4]})
wf2 = Workflow([fw2])
wf1.append_wf(new_wf=wf2, fw_ids=[fw1.fw_id], detour=True)
where I expect fw2 to be inserted between fw1 and fw3.
Setting propagate=False
for PushTask
gives
False on PushTask
PushTask::self: <{{mwe2_2.PushTask}}>:{'lname': 'meep', 'thing': 't1', '_fw_name': '{{mwe2_2.PushTask}}'}
PushTask::fw_spec: {'_tasks': [{'lname': 'meep', 'thing': 't1', '_fw_name': '{{mwe2_2.PushTask}}'}, {'lname': 'meep', 'thing': 't2', '_fw_name': '{{mwe2_2.PushTask}}'}], '_fw_env': {}}
PushTask::self: <{{mwe2_2.PushTask}}>:{'lname': 'meep', 'thing': 't2', '_fw_name': '{{mwe2_2.PushTask}}'}
PushTask::fw_spec: {'_tasks': [{'lname': 'meep', 'thing': 't1', '_fw_name': '{{mwe2_2.PushTask}}'}, {'lname': 'meep', 'thing': 't2', '_fw_name': '{{mwe2_2.PushTask}}'}], '_fw_env': {}, 'things': {'meep': ['t1']}}
PushTask::self: <{{mwe2_2.PushTask}}>:{'lname': 'meep', 'thing': 't5', '_fw_name': '{{mwe2_2.PushTask}}'}
PushTask::fw_spec: {'_tasks': [{'lname': 'meep', 'thing': 't5', '_fw_name': '{{mwe2_2.PushTask}}'}, {'lname': 'meep', 'thing': 't6', '_fw_name': '{{mwe2_2.PushTask}}'}], 'things': {'meep': ['t1', 't2']}, '_fw_env': {}}
PushTask::self: <{{mwe2_2.PushTask}}>:{'lname': 'meep', 'thing': 't6', '_fw_name': '{{mwe2_2.PushTask}}'}
PushTask::fw_spec: {'_tasks': [{'lname': 'meep', 'thing': 't5', '_fw_name': '{{mwe2_2.PushTask}}'}, {'lname': 'meep', 'thing': 't6', '_fw_name': '{{mwe2_2.PushTask}}'}], 'things': {'meep': ['t1', 't2', 't5']}, '_fw_env': {}}
PrintTask::self: <{{mwe2_2.PrintTask}}>:{'_fw_name': '{{mwe2_2.PrintTask}}'}
PrintTask::fw_spec: {'_tasks': [{'_fw_name': '{{mwe2_2.PrintTask}}'}], 'things': {'meep': ['t5', 't6']}, '_fw_env': {}}
PushTask::self: <{{mwe2_2.PushTask}}>:{'lname': 'meep', 'thing': 't3', '_fw_name': '{{mwe2_2.PushTask}}'}
PushTask::fw_spec: {'_tasks': [{'lname': 'meep', 'thing': 't3', '_fw_name': '{{mwe2_2.PushTask}}'}, {'lname': 'meep', 'thing': 't4', '_fw_name': '{{mwe2_2.PushTask}}'}], 'things': {'meep': ['t1', 't2']}, '_fw_env': {}}
PushTask::self: <{{mwe2_2.PushTask}}>:{'lname': 'meep', 'thing': 't4', '_fw_name': '{{mwe2_2.PushTask}}'}
PushTask::fw_spec: {'_tasks': [{'lname': 'meep', 'thing': 't3', '_fw_name': '{{mwe2_2.PushTask}}'}, {'lname': 'meep', 'thing': 't4', '_fw_name': '{{mwe2_2.PushTask}}'}], 'things': {'meep': ['t1', 't2', 't3']}, '_fw_env': {}}
and changing it to True
gives
PushTask::self: <{{mwe2_2.PushTask}}>:{'lname': 'meep', 'thing': 't1', '_fw_name': '{{mwe2_2.PushTask}}'}
PushTask::fw_spec: {'_tasks': [{'lname': 'meep', 'thing': 't1', '_fw_name': '{{mwe2_2.PushTask}}'}, {'lname': 'meep', 'thing': 't2', '_fw_name': '{{mwe2_2.PushTask}}'}], '_fw_env': {}}
PushTask::self: <{{mwe2_2.PushTask}}>:{'lname': 'meep', 'thing': 't2', '_fw_name': '{{mwe2_2.PushTask}}'}
PushTask::fw_spec: {'_tasks': [{'lname': 'meep', 'thing': 't1', '_fw_name': '{{mwe2_2.PushTask}}'}, {'lname': 'meep', 'thing': 't2', '_fw_name': '{{mwe2_2.PushTask}}'}], '_fw_env': {}, 'things': {'meep': ['t1']}}
PushTask::self: <{{mwe2_2.PushTask}}>:{'lname': 'meep', 'thing': 't5', '_fw_name': '{{mwe2_2.PushTask}}'}
PushTask::fw_spec: {'_tasks': [{'lname': 'meep', 'thing': 't5', '_fw_name': '{{mwe2_2.PushTask}}'}, {'lname': 'meep', 'thing': 't6', '_fw_name': '{{mwe2_2.PushTask}}'}], 'things': {'meep': ['t1', 't2']}, '_fw_env': {}}
PushTask::self: <{{mwe2_2.PushTask}}>:{'lname': 'meep', 'thing': 't6', '_fw_name': '{{mwe2_2.PushTask}}'}
PushTask::fw_spec: {'_tasks': [{'lname': 'meep', 'thing': 't5', '_fw_name': '{{mwe2_2.PushTask}}'}, {'lname': 'meep', 'thing': 't6', '_fw_name': '{{mwe2_2.PushTask}}'}], 'things': {'meep': ['t1', 't2', 't5']}, '_fw_env': {}}
PrintTask::self: <{{mwe2_2.PrintTask}}>:{'_fw_name': '{{mwe2_2.PrintTask}}'}
PrintTask::fw_spec: {'_tasks': [{'_fw_name': '{{mwe2_2.PrintTask}}'}], 'things': {'meep': ['t1', 't2', 't5', 't6']}, '_fw_env': {}}
PushTask::self: <{{mwe2_2.PushTask}}>:{'lname': 'meep', 'thing': 't3', '_fw_name': '{{mwe2_2.PushTask}}'}
PushTask::fw_spec: {'_tasks': [{'lname': 'meep', 'thing': 't3', '_fw_name': '{{mwe2_2.PushTask}}'}, {'lname': 'meep', 'thing': 't4', '_fw_name': '{{mwe2_2.PushTask}}'}], 'things': {'meep': ['t1', 't2']}, '_fw_env': {}}
PushTask::self: <{{mwe2_2.PushTask}}>:{'lname': 'meep', 'thing': 't4', '_fw_name': '{{mwe2_2.PushTask}}'}
PushTask::fw_spec: {'_tasks': [{'lname': 'meep', 'thing': 't3', '_fw_name': '{{mwe2_2.PushTask}}'}, {'lname': 'meep', 'thing': 't4', '_fw_name': '{{mwe2_2.PushTask}}'}], 'things': {'meep': ['t1', 't2', 't3']}, '_fw_env': {}}
It make sense that fw2 doesn’t see the updated specs without turning on propagation, but it looks like the detour is not working: instead of ['t1', 't2', 't5', 't6']
for the print task, I would have expected ['t1', 't2', 't3', 't4', 't5', 't6']
.