diff --git a/airflow/utils/task_group.py b/airflow/utils/task_group.py index 4b8392be7b3f0..4d79d74e24de1 100644 --- a/airflow/utils/task_group.py +++ b/airflow/utils/task_group.py @@ -179,7 +179,7 @@ def _check_for_group_id_collisions(self, add_suffix_on_collision: bool): def _update_default_args(self, parent_group: TaskGroup): if parent_group.default_args: - self.default_args = {**self.default_args, **parent_group.default_args} + self.default_args = {**parent_group.default_args, **self.default_args} @classmethod def create_root(cls, dag: DAG) -> TaskGroup: diff --git a/tests/utils/test_task_group.py b/tests/utils/test_task_group.py index c9927eb3ba257..a5262aa2eb03b 100644 --- a/tests/utils/test_task_group.py +++ b/tests/utils/test_task_group.py @@ -1368,11 +1368,16 @@ def test_override_dag_default_args_in_multi_level_nested_tg(): "execution_timeout": timedelta(seconds=10), }, ): - with TaskGroup(group_id="first_nested_task_group"): + with TaskGroup( + group_id="first_nested_task_group", + default_args={ + "owner": "z", + }, + ): with TaskGroup(group_id="second_nested_task_group"): with TaskGroup(group_id="third_nested_task_group"): task = EmptyOperator(task_id="task") assert task.retries == 1 - assert task.owner == "y" + assert task.owner == "z" assert task.execution_timeout == timedelta(seconds=10)