code: def test_iter_tasks():
      with DAG(
          "test_dag", start_date=pendulum.parse("20200101")
      ) as dag:
          with TaskGroup("section_1") as tg1:
              EmptyOperator(task_id="task1")
  
          with TaskGroup("section_2") as tg2:
              task2 = EmptyOperator(task_id="task2")
              task3 = EmptyOperator(task_id="task3")
              mapped_bash_operator = BashOperator.partial(
                  task_id="bash_task"
              ).expand(
                  bash_command=[
                      "echo hello 1",
                      "echo hello 2",
                      "echo hello 3",
                  ]
              )
              task2 >> task3 >> mapped_bash_operator
  
      tg1 >> tg2
      root_group = dag.task_group
      assert [t.task_id for t in root_group.iter_tasks()] == [
          "section_1.task1",
          "section_2.task2",
          "section_2.task3",
          "section_2.bash_task",
      ]
      assert [t.task_id for t in tg1.iter_tasks()] == [
          "section_1.task1",
      ]
      assert [t.task_id for t in tg2.iter_tasks()] == [
          "section_2.task2",
          "section_2.task3",
          "section_2.bash_task",
      ]
  
imports: from __future__ import annotations
  from datetime import timedelta
  import pendulum
  import pytest
  from airflow.decorators import dag, setup, task, task_group, teardown
  from airflow.exceptions import TaskAlreadyInTaskGroup
  from airflow.models.baseoperator import BaseOperator
  from airflow.models.dag import DAG
  from airflow.models.xcom_arg import XComArg
  from airflow.operators.bash import BashOperator
  from airflow.operators.empty import EmptyOperator
  from airflow.operators.python import PythonOperator
  from airflow.utils.dag_edges import dag_edges
  from airflow.utils.task_group import TaskGroup, task_group_to_dict
  from tests.models import DEFAULT_DATE
label_desc: Use image node_id 32 for calling a global function with example usage: test_iter_tasks() without return types