code: def next_dagrun_info(
      self,
      *,
      last_automated_data_interval: DataInterval | None,
      restriction: TimeRestriction,
  ) -> DagRunInfo | None:
      if (
          last_automated_data_interval is not None
      ):  # There was a previous run on the regular schedule.
          last_start = last_automated_data_interval.start
          next_start = DateTime.combine(
              (last_start + timedelta(days=1)).date(), Time.min
          )
      # Otherwise this is the first ever run on the regular schedule...
      elif (earliest := restriction.earliest) is None:
          return None  # No start_date. Don't schedule.
      elif not restriction.catchup:
          # If the DAG has catchup=False, today is the earliest to consider.
          next_start = max(
              earliest, DateTime.combine(Date.today(), Time.min)
          )
      elif earliest.time() != Time.min:
          # If earliest does not fall on midnight, skip to the next day.
          next_start = DateTime.combine(
              earliest.date() + timedelta(days=1), Time.min
          )
      else:
          next_start = earliest
      # Skip weekends and holidays
      next_start = self.get_next_workday(next_start.replace(tzinfo=UTC))
  
      if (
          restriction.latest is not None
          and next_start > restriction.latest
      ):
          return None  # Over the DAG's scheduled end; don't schedule.
      return DagRunInfo.interval(
          start=next_start, end=(next_start + timedelta(days=1))
      )
  
file_path: airflow/airflow/example_dags/plugins/workday.py
imports: from __future__ import annotations
  import logging
  from datetime import timedelta
  from typing import TYPE_CHECKING
  from pendulum import UTC, Date, DateTime, Time
  from airflow.plugins_manager import AirflowPlugin
  from airflow.timetables.base import DagRunInfo, DataInterval, Timetable
label_desc: Use image node_id 3 for calling the AfterWorkdayTimetable obj's underlying member method code with example usage: obj.next_dagrun_info() and returns: DagRunInfo, None, None