code: def get_task_instance(
      dag_id: str, task_id: str, execution_date: datetime
  ) -> TaskInstance:
      """Return the task instance identified by the given dag_id, task_id and execution_date."""
      dag = check_and_get_dag(dag_id, task_id)
  
      dagrun = check_and_get_dagrun(
          dag=dag, execution_date=execution_date
      )
      # Get task instance object and check that it exists
      task_instance = dagrun.get_task_instance(task_id)
      if not task_instance:
          error_message = f"Task {task_id} instance for date {execution_date} not found"
          raise TaskInstanceNotFound(error_message)
      # API methods has access to the database.
      if isinstance(task_instance, TaskInstance):
          return task_instance
      raise ValueError("not a TaskInstance")
  
imports: from __future__ import annotations
  from typing import TYPE_CHECKING
  from deprecated import deprecated
  from airflow.api.common.experimental import check_and_get_dag, check_and_get_dagrun
  from airflow.exceptions import TaskInstanceNotFound
  from airflow.models import TaskInstance
label_desc: Use image node_id 1 for calling a global function with example usage: get_task_instance(dag_id, task_id, execution_date) and returns: task_instance