:py:mod:`airflow.timetables.events`
===================================

.. py:module:: airflow.timetables.events


Module Contents
---------------

Classes
~~~~~~~

.. autoapisummary::

   airflow.timetables.events.EventsTimetable




.. py:class:: EventsTimetable(event_dates, restrict_to_events = False, presorted = False, description = None)

   Bases: :py:obj:`airflow.timetables.base.Timetable`

   Timetable that schedules DAG runs at specific listed datetimes. Suitable for
   predictable but truly irregular scheduling such as sporting events.

   :param event_dates: List of datetimes for the DAG to run at. Duplicates will be ignored. Must be finite
                       and of reasonable size as it will be loaded in its entirety.
   :param restrict_to_events: Whether manual runs should use the most recent event or
       the current time
   :param presorted: if True, event_dates will be assumed to be in ascending order. Provides modest
       performance improvement for larger lists of event_dates.
   :param description: A name for the timetable to display in the UI. Default None will be shown as
                       "X Events" where X is the len of event_dates

   .. py:method:: summary(self)
      :property:

      A short summary for the timetable.

      This is used to display the timetable in the web UI. A cron expression
      timetable, for example, can use this to display the expression. The
      default implementation returns the timetable's type name.


   .. py:method:: __repr__(self)

      Return repr(self).


   .. py:method:: next_dagrun_info(self, *, last_automated_data_interval, restriction)

      Provide information to schedule the next DagRun.

      The default implementation raises ``NotImplementedError``.

      :param last_automated_data_interval: The data interval of the associated
          DAG's last scheduled or backfilled run (manual runs not considered).
      :param restriction: Restriction to apply when scheduling the DAG run.
          See documentation of :class:`TimeRestriction` for details.

      :return: Information on when the next DagRun can be scheduled. None
          means a DagRun will not happen. This does not mean no more runs
          will be scheduled even again for this DAG; the timetable can return
          a DagRunInfo object when asked at another time.


   .. py:method:: infer_manual_data_interval(self, *, run_after)

      When a DAG run is manually triggered, infer a data interval for it.

      This is used for e.g. manually-triggered runs, where ``run_after`` would
      be when the user triggers the run. The default implementation raises
      ``NotImplementedError``.


   .. py:method:: serialize(self)

      Serialize the timetable for JSON encoding.

      This is called during DAG serialization to store timetable information
      in the database. This should return a JSON-serializable dict that will
      be fed into ``deserialize`` when the DAG is deserialized. The default
      implementation returns an empty dict.


   .. py:method:: deserialize(cls, data)
      :classmethod:

      Deserialize a timetable from data.

      This is called when a serialized DAG is deserialized. ``data`` will be
      whatever was returned by ``serialize`` during DAG serialization. The
      default implementation constructs the timetable without any arguments.



