Source code for airflow_pydantic.operators.datetime

from logging import getLogger

from pydantic import Field, field_validator

from ..core import Task, TaskArgs
from ..utils import DatetimeArg, ImportPath

__all__ = (
    "BranchDateTimeOperator",
    "BranchDateTimeOperatorArgs",
    "BranchDateTimeTask",
    "BranchDateTimeTaskArgs",
)

_log = getLogger(__name__)


[docs] class BranchDateTimeTaskArgs(TaskArgs): # https://airflow.apache.org/docs/apache-airflow-providers-standard/stable/_api/airflow/providers/standard/operators/datetime/index.html#airflow.providers.standard.operators.datetime.BranchDateTimeOperator follow_task_ids_if_true: list[str] | None = Field(default=None, description="List of task IDs to follow if condition evaluates to True") follow_task_ids_if_false: list[str] | None = Field(default=None, description="List of task IDs to follow if condition evaluates to False") target_lower: DatetimeArg | None = Field(default=None, description="The lower bound datetime to compare against") target_upper: DatetimeArg | None = Field(default=None, description="The upper bound datetime to compare against") use_task_logical_date: bool | None = Field( default=None, description="If True, uses the task's logical date for comparison; otherwise, uses the current datetime" ) use_task_execution_date: bool | None = Field( default=None, description="If True, uses the task's execution date for comparison; otherwise, uses the current datetime" )
# Alias BranchDateTimeOperatorArgs = BranchDateTimeTaskArgs
[docs] class BranchDateTimeTask(Task, BranchDateTimeTaskArgs): operator: ImportPath = Field( default="airflow_pydantic.airflow.BranchDateTimeOperator", description="airflow operator path", validate_default=True ) @field_validator("operator") @classmethod def validate_operator(cls, v: type) -> type: from airflow_pydantic.airflow import BranchDateTimeOperator, _AirflowPydanticMarker if not isinstance(v, type): raise TypeError(f"operator must be 'airflow.providers.standard.operators.datetime.BranchDateTimeOperator', got: {v}") if issubclass(v, _AirflowPydanticMarker): _log.info("BranchDateTimeOperator is a marker class, returning as is") return v if not issubclass(v, BranchDateTimeOperator): raise TypeError(f"operator must be 'airflow.providers.standard.operators.datetime.BranchDateTimeOperator', got: {v}") return v
# Alias BranchDateTimeOperator = BranchDateTimeTask