This is an automated email from the ASF dual-hosted git repository.

kaxilnaik pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 16ff7dcb3b8 Move ``SetupTeardownContext`` to Task SDK (#53160)
16ff7dcb3b8 is described below

commit 16ff7dcb3b80cbb71bb3e8494e5664b8c0ff2445
Author: Kaxil Naik <[email protected]>
AuthorDate: Fri Jul 11 12:03:37 2025 +0530

    Move ``SetupTeardownContext`` to Task SDK (#53160)
---
 airflow-core/src/airflow/utils/__init__.py                    | 11 +++++++++++
 task-sdk/src/airflow/sdk/bases/operator.py                    |  2 +-
 .../src/airflow/sdk/definitions/_internal/abstractoperator.py |  2 +-
 .../src/airflow/sdk/definitions/_internal}/setup_teardown.py  |  4 ++--
 .../src/airflow/sdk/definitions/decorators/setup_teardown.py  |  7 +++----
 task-sdk/src/airflow/sdk/definitions/xcom_arg.py              |  2 +-
 6 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/airflow-core/src/airflow/utils/__init__.py 
b/airflow-core/src/airflow/utils/__init__.py
index 8a1573c8457..574fbb642f3 100644
--- a/airflow-core/src/airflow/utils/__init__.py
+++ b/airflow-core/src/airflow/utils/__init__.py
@@ -18,6 +18,8 @@
 
 from __future__ import annotations
 
+from airflow.utils.deprecation_tools import add_deprecated_classes
+
 
 def _deprecate_this_module(message: str, **shims: tuple[str, str]):
     import warnings
@@ -34,3 +36,12 @@ def _deprecate_this_module(message: str, **shims: tuple[str, 
str]):
         return getattr(__import__(impa), attr)
 
     return __getattr__
+
+
+__deprecated_classes = {
+    "setup_teardown": {
+        "BaseSetupTeardownContext": 
"airflow.sdk.definitions._internal.setup_teardown.BaseSetupTeardownContext",
+        "SetupTeardownContext": 
"airflow.sdk.definitions._internal.setup_teardown.SetupTeardownContext",
+    },
+}
+add_deprecated_classes(__deprecated_classes, __name__)
diff --git a/task-sdk/src/airflow/sdk/bases/operator.py 
b/task-sdk/src/airflow/sdk/bases/operator.py
index 3f74694aaa7..8cab2861e92 100644
--- a/task-sdk/src/airflow/sdk/bases/operator.py
+++ b/task-sdk/src/airflow/sdk/bases/operator.py
@@ -55,6 +55,7 @@ from airflow.sdk.definitions._internal.abstractoperator 
import (
 )
 from airflow.sdk.definitions._internal.decorators import 
fixup_decorator_warning_stack
 from airflow.sdk.definitions._internal.node import validate_key
+from airflow.sdk.definitions._internal.setup_teardown import 
SetupTeardownContext
 from airflow.sdk.definitions._internal.types import NOTSET, 
validate_instance_args
 from airflow.sdk.definitions.edges import EdgeModifier
 from airflow.sdk.definitions.mappedoperator import OperatorPartial, 
validate_mapping_kwargs
@@ -65,7 +66,6 @@ from airflow.task.priority_strategy import (
     validate_and_load_priority_weight_strategy,
 )
 from airflow.utils import timezone
-from airflow.utils.setup_teardown import SetupTeardownContext
 from airflow.utils.trigger_rule import TriggerRule
 from airflow.utils.weight_rule import db_safe_priority
 
diff --git a/task-sdk/src/airflow/sdk/definitions/_internal/abstractoperator.py 
b/task-sdk/src/airflow/sdk/definitions/_internal/abstractoperator.py
index 8934cd0e453..e7ee16af247 100644
--- a/task-sdk/src/airflow/sdk/definitions/_internal/abstractoperator.py
+++ b/task-sdk/src/airflow/sdk/definitions/_internal/abstractoperator.py
@@ -33,9 +33,9 @@ import methodtools
 from airflow.configuration import conf
 from airflow.sdk.definitions._internal.mixins import DependencyMixin
 from airflow.sdk.definitions._internal.node import DAGNode
+from airflow.sdk.definitions._internal.setup_teardown import 
SetupTeardownContext
 from airflow.sdk.definitions._internal.templater import Templater
 from airflow.sdk.definitions.context import Context
-from airflow.utils.setup_teardown import SetupTeardownContext
 from airflow.utils.trigger_rule import TriggerRule
 from airflow.utils.weight_rule import WeightRule
 
diff --git a/airflow-core/src/airflow/utils/setup_teardown.py 
b/task-sdk/src/airflow/sdk/definitions/_internal/setup_teardown.py
similarity index 99%
rename from airflow-core/src/airflow/utils/setup_teardown.py
rename to task-sdk/src/airflow/sdk/definitions/_internal/setup_teardown.py
index b62e3ab298b..961099c6f97 100644
--- a/airflow-core/src/airflow/utils/setup_teardown.py
+++ b/task-sdk/src/airflow/sdk/definitions/_internal/setup_teardown.py
@@ -1,3 +1,4 @@
+#
 # Licensed to the Apache Software Foundation (ASF) under one
 # or more contributor license agreements.  See the NOTICE file
 # distributed with this work for additional information
@@ -14,7 +15,6 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-
 from __future__ import annotations
 
 from typing import TYPE_CHECKING, cast
@@ -22,8 +22,8 @@ from typing import TYPE_CHECKING, cast
 from airflow.exceptions import AirflowException
 
 if TYPE_CHECKING:
-    from airflow.models.taskmixin import DependencyMixin
     from airflow.sdk.definitions._internal.abstractoperator import 
AbstractOperator
+    from airflow.sdk.definitions._internal.mixins import DependencyMixin
     from airflow.sdk.definitions.xcom_arg import PlainXComArg
 
 
diff --git a/task-sdk/src/airflow/sdk/definitions/decorators/setup_teardown.py 
b/task-sdk/src/airflow/sdk/definitions/decorators/setup_teardown.py
index e5e2bf40ee9..bcb8e6d12e2 100644
--- a/task-sdk/src/airflow/sdk/definitions/decorators/setup_teardown.py
+++ b/task-sdk/src/airflow/sdk/definitions/decorators/setup_teardown.py
@@ -21,17 +21,16 @@ from collections.abc import Callable
 from typing import TYPE_CHECKING
 
 from airflow.exceptions import AirflowException
-from airflow.providers.standard.version_compat import AIRFLOW_V_3_0_PLUS
 from airflow.sdk.bases.operator import BaseOperator
+from airflow.sdk.definitions._internal.setup_teardown import 
SetupTeardownContext
 from airflow.sdk.definitions.decorators.task_group import _TaskGroupFactory
-from airflow.utils.setup_teardown import SetupTeardownContext
 
 if TYPE_CHECKING:
     from airflow.sdk.definitions.xcom_arg import XComArg
 
-if AIRFLOW_V_3_0_PLUS:
+try:
     from airflow.providers.standard.decorators.python import python_task
-else:
+except (ImportError, AttributeError):
     from airflow.decorators import python_task  # type: ignore
 
 
diff --git a/task-sdk/src/airflow/sdk/definitions/xcom_arg.py 
b/task-sdk/src/airflow/sdk/definitions/xcom_arg.py
index 8908429d08a..4b74c085c4c 100644
--- a/task-sdk/src/airflow/sdk/definitions/xcom_arg.py
+++ b/task-sdk/src/airflow/sdk/definitions/xcom_arg.py
@@ -27,10 +27,10 @@ from typing import TYPE_CHECKING, Any, overload
 from airflow.exceptions import AirflowException, XComNotFound
 from airflow.sdk.definitions._internal.abstractoperator import AbstractOperator
 from airflow.sdk.definitions._internal.mixins import DependencyMixin, 
ResolveMixin
+from airflow.sdk.definitions._internal.setup_teardown import 
SetupTeardownContext
 from airflow.sdk.definitions._internal.types import NOTSET, ArgNotSet
 from airflow.sdk.execution_time.lazy_sequence import LazyXComSequence
 from airflow.sdk.execution_time.xcom import BaseXCom
-from airflow.utils.setup_teardown import SetupTeardownContext
 from airflow.utils.trigger_rule import TriggerRule
 
 if TYPE_CHECKING:

Reply via email to