Source code for airflow_ha.task
from airflow_pydantic import ImportPath, PythonSensorArgs, Task
from pydantic import Field, field_validator
from .common import (
Endtime,
FailTriggerKwargs,
MaxRetrigger,
PassTriggerKwargs,
ReferenceDate,
Runtime,
)
from .operator import HighAvailabilityOperator
__all__ = (
"HighAvailabilitySensorTask",
"HighAvailabilitySensorTaskArgs",
"HighAvailabilityTask",
"HighAvailabilityTaskArgs",
)
[docs]
class HighAvailabilityTaskArgs(PythonSensorArgs):
"""
Args for the HighAvailabilityTask.
Inherits from PythonSensorArgs to allow for custom Python callable.
"""
# python_callable inherited from PythonSensorArgs
pass_trigger_kwargs: PassTriggerKwargs | None = None
fail_trigger_kwargs: FailTriggerKwargs | None = None
runtime: Runtime | None = 120
endtime: Endtime | None = None
maxretrigger: MaxRetrigger | None = 2
reference_date: ReferenceDate = "data_interval_end"
# Alias
HighAvailabilitySensorTaskArgs = HighAvailabilityTaskArgs
[docs]
class HighAvailabilityTask(Task, HighAvailabilityTaskArgs):
operator: ImportPath = Field(default="airflow_ha.HighAvailabilitySensor", description="airflow sensor path", validate_default=True)
@field_validator("operator")
@classmethod
def validate_operator(cls, v: type) -> type:
if not isinstance(v, type) and issubclass(v, HighAvailabilityOperator):
raise TypeError(f"operator must be 'airflow_ha.HighAvailabilitySensor', got: {v}")
return v
# Alias
HighAvailabilitySensorTask = HighAvailabilityTask