code: def test_dag_edges_setup_teardown():
      execution_date = pendulum.parse("20200101")
      with DAG("test_dag_edges", start_date=execution_date) as dag:
          setup1 = EmptyOperator(task_id="setup1").as_setup()
          teardown1 = EmptyOperator(task_id="teardown1").as_teardown()
  
          with setup1 >> teardown1:
              EmptyOperator(task_id="task1")
  
          with TaskGroup("group_a"):
              setup2 = EmptyOperator(task_id="setup2").as_setup()
              teardown2 = EmptyOperator(
                  task_id="teardown2"
              ).as_teardown()
  
              with setup2 >> teardown2:
                  EmptyOperator(task_id="task2")
  
      edges = dag_edges(dag)
  
      assert sorted(
          (e["source_id"], e["target_id"], e.get("is_setup_teardown"))
          for e in edges
      ) == [
          ("group_a.setup2", "group_a.task2", None),
          ("group_a.setup2", "group_a.teardown2", True),
          ("group_a.task2", "group_a.teardown2", None),
          ("setup1", "task1", None),
          ("setup1", "teardown1", True),
          ("task1", "teardown1", None),
      ]
  
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 9 for calling a global function with example usage: test_dag_edges_setup_teardown() without return types