66import click
77import pytask
88from pytask import hookimpl
9+ from pytask .dag import descending_tasks
910from pytask .dag import node_and_neigbors
1011from pytask .dag import sort_tasks_topologically
11- from pytask .dag import task_and_descending_tasks
1212from pytask .database import create_or_update_state
13+ from pytask .exceptions import ExecutionError
1314from pytask .exceptions import NodeNotFoundError
1415from pytask .mark import Mark
1516from pytask .nodes import FilePathNode
@@ -116,7 +117,7 @@ def pytask_execute_task_process_report(session, report):
116117 if report .success :
117118 _update_states_in_database (session .dag , task .name )
118119 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 ):
120121 descending_task = session .dag .nodes [descending_task_name ]["task" ]
121122 descending_task .markers .append (
122123 Mark (
@@ -125,7 +126,6 @@ def pytask_execute_task_process_report(session, report):
125126 {"reason" : f"Previous task '{ task .name } ' failed." },
126127 )
127128 )
128-
129129 return True
130130
131131
@@ -161,6 +161,9 @@ def pytask_execute_log_end(session, reports):
161161 format_execute_footer (n_successful , n_failed , duration , tm_width ), nl = True
162162 )
163163
164+ if n_failed :
165+ raise ExecutionError
166+
164167 return True
165168
166169
0 commit comments