From aec4b3e05bd04b330c82fde525cda650d39016f0 Mon Sep 17 00:00:00 2001 From: Kaxil Naik Date: Fri, 26 Sep 2025 01:27:31 +0100 Subject: [PATCH] Add back Deprecation warning for sla_miss_callback This was removed in #50093 -- I assume by mistake! Adding this back to not break das of people migration from Airflow 2.x --- task-sdk/src/airflow/sdk/bases/operator.py | 2 +- task-sdk/src/airflow/sdk/definitions/dag.py | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/task-sdk/src/airflow/sdk/bases/operator.py b/task-sdk/src/airflow/sdk/bases/operator.py index 2cc891d106b7a..a11b5894b0d60 100644 --- a/task-sdk/src/airflow/sdk/bases/operator.py +++ b/task-sdk/src/airflow/sdk/bases/operator.py @@ -1108,7 +1108,7 @@ def __init__( raise ValueError(f"pool slots for {self.task_id}{dag_str} cannot be less than 1") if sla is not None: warnings.warn( - "The SLA feature is removed in Airflow 3.0, to be replaced with a new implementation in >=3.1", + "The SLA feature is removed in Airflow 3.0, replaced with Deadline Alerts in >=3.1", stacklevel=2, ) diff --git a/task-sdk/src/airflow/sdk/definitions/dag.py b/task-sdk/src/airflow/sdk/definitions/dag.py index 5c4b139eb7582..4a5f9bd92f11b 100644 --- a/task-sdk/src/airflow/sdk/definitions/dag.py +++ b/task-sdk/src/airflow/sdk/definitions/dag.py @@ -460,6 +460,7 @@ def __rich_repr__(self): ), ) + sla_miss_callback: None = attrs.field(default=None) catchup: bool = attrs.field( factory=_config_bool_factory("scheduler", "catchup_by_default"), ) @@ -614,6 +615,15 @@ def _has_on_success_callback(self) -> bool: def _has_on_failure_callback(self) -> bool: return self.on_failure_callback is not None + @sla_miss_callback.validator + def _validate_sla_miss_callback(self, _, value): + if value is not None: + warnings.warn( + "The SLA feature is removed in Airflow 3.0, and replaced with a Deadline Alerts in >=3.1", + stacklevel=2, + ) + return value + def __repr__(self): return f""