6
6
import click
7
7
import pytask
8
8
from pytask import hookimpl
9
+ from pytask .dag import descending_tasks
9
10
from pytask .dag import node_and_neigbors
10
11
from pytask .dag import sort_tasks_topologically
11
- from pytask .dag import task_and_descending_tasks
12
12
from pytask .database import create_or_update_state
13
+ from pytask .exceptions import ExecutionError
13
14
from pytask .exceptions import NodeNotFoundError
14
15
from pytask .mark import Mark
15
16
from pytask .nodes import FilePathNode
@@ -116,7 +117,7 @@ def pytask_execute_task_process_report(session, report):
116
117
if report .success :
117
118
_update_states_in_database (session .dag , task .name )
118
119
else :
119
- for descending_task_name in task_and_descending_tasks (task .name , session .dag ):
120
+ for descending_task_name in descending_tasks (task .name , session .dag ):
120
121
descending_task = session .dag .nodes [descending_task_name ]["task" ]
121
122
descending_task .markers .append (
122
123
Mark (
@@ -125,7 +126,6 @@ def pytask_execute_task_process_report(session, report):
125
126
{"reason" : f"Previous task '{ task .name } ' failed." },
126
127
)
127
128
)
128
-
129
129
return True
130
130
131
131
@@ -161,6 +161,9 @@ def pytask_execute_log_end(session, reports):
161
161
format_execute_footer (n_successful , n_failed , duration , tm_width ), nl = True
162
162
)
163
163
164
+ if n_failed :
165
+ raise ExecutionError
166
+
164
167
return True
165
168
166
169
0 commit comments