2020from _pytask .dag_utils import TopologicalSorter
2121from _pytask .dag_utils import descending_tasks
2222from _pytask .dag_utils import node_and_neighbors
23- from _pytask .database_utils import get_node_change_info
24- from _pytask .database_utils import has_node_changed
25- from _pytask .database_utils import update_states_in_database
2623from _pytask .exceptions import ExecutionError
2724from _pytask .exceptions import NodeLoadError
2825from _pytask .exceptions import NodeNotFoundError
4643from _pytask .pluginmanager import hookimpl
4744from _pytask .provisional_utils import collect_provisional_products
4845from _pytask .reports import ExecutionReport
46+ from _pytask .state import get_node_change_info
47+ from _pytask .state import has_node_changed
48+ from _pytask .state import update_states
4949from _pytask .traceback import remove_traceback_from_exc_info
5050from _pytask .tree_util import tree_leaves
5151from _pytask .tree_util import tree_map
@@ -196,7 +196,7 @@ def pytask_execute_task_setup(session: Session, task: PTask) -> None: # noqa: C
196196 # Check if node changed and collect detailed info if in explain mode
197197 if session .config ["explain" ]:
198198 has_changed , reason , details = get_node_change_info (
199- task = task , node = node , state = node_state
199+ session = session , task = task , node = node , state = node_state
200200 )
201201 if has_changed :
202202 needs_to_be_executed = True
@@ -222,7 +222,9 @@ def pytask_execute_task_setup(session: Session, task: PTask) -> None: # noqa: C
222222 )
223223 )
224224 else :
225- has_changed = has_node_changed (task = task , node = node , state = node_state )
225+ has_changed = has_node_changed (
226+ session = session , task = task , node = node , state = node_state
227+ )
226228 if has_changed :
227229 needs_to_be_executed = True
228230
@@ -232,6 +234,8 @@ def pytask_execute_task_setup(session: Session, task: PTask) -> None: # noqa: C
232234
233235 if not needs_to_be_executed :
234236 collect_provisional_products (session , task )
237+ if not session .config ["dry_run" ] and not session .config ["explain" ]:
238+ update_states (session , task )
235239 raise SkippedUnchanged
236240
237241 # Create directory for product if it does not exist. Maybe this should be a `setup`
@@ -326,7 +330,7 @@ def pytask_execute_task_process_report(
326330 task = report .task
327331
328332 if report .outcome == TaskOutcome .SUCCESS :
329- update_states_in_database (session , task . signature )
333+ update_states (session , task )
330334 elif report .exc_info and isinstance (report .exc_info [1 ], WouldBeExecuted ):
331335 report .outcome = TaskOutcome .WOULD_BE_EXECUTED
332336
0 commit comments