class_docstr: TaskReschedule tracks rescheduled task instances.
code: def __init__(
      self,
      task: Operator,
      run_id: str,
      try_number: int,
      start_date: datetime.datetime,
      end_date: datetime.datetime,
      reschedule_date: datetime.datetime,
      map_index: int = -1,
  ) -> None:
      self.dag_id = task.dag_id
      self.task_id = task.task_id
      self.run_id = run_id
      self.map_index = map_index
      self.try_number = try_number
      self.start_date = start_date
      self.end_date = end_date
      self.reschedule_date = reschedule_date
      self.duration = (self.end_date - self.start_date).total_seconds()
  
file_path: airflow/airflow/models/taskreschedule.py
imports: from __future__ import annotations
  import warnings
  from typing import TYPE_CHECKING
  from sqlalchemy import Column, ForeignKeyConstraint, Index, Integer, String, asc, desc, select, text
  from sqlalchemy.ext.associationproxy import association_proxy
  from sqlalchemy.orm import relationship
  from airflow.exceptions import RemovedInAirflow3Warning
  from airflow.models.base import COLLATION_ARGS, ID_LEN, TaskInstanceDependencies
  from airflow.utils.session import NEW_SESSION, provide_session
  from airflow.utils.sqlalchemy import UtcDateTime
label_desc: Use image node_id 1 to create a new TaskReschedule object from inherited base classes: TaskInstanceDependencies with example: obj = TaskReschedule(task, run_id, try_number, start_date, end_date, reschedule_date, map_index)