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

potiuk 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 8b3ba0090e6 Replace usages of XCOM_RETURN_KEY in providers to not be 
from utils (#53170)
8b3ba0090e6 is described below

commit 8b3ba0090e610311ff4fdb7f27471e273c430f42
Author: Amogh Desai <[email protected]>
AuthorDate: Fri Jul 11 14:48:02 2025 +0530

    Replace usages of XCOM_RETURN_KEY in providers to not be from utils (#53170)
---
 .../src/tests_common/test_utils/version_compat.py         | 15 +++++++++++++++
 .../airflow/providers/cncf/kubernetes/operators/pod.py    |  3 +--
 .../airflow/providers/cncf/kubernetes/version_compat.py   |  3 +++
 .../tests/unit/cncf/kubernetes/operators/test_pod.py      |  3 +--
 .../common/io/tests/unit/common/io/xcom/test_backend.py   |  3 +--
 .../providers/microsoft/azure/operators/msgraph.py        |  3 +--
 .../airflow/providers/microsoft/azure/version_compat.py   | 14 +++++++++-----
 .../tests/unit/standard/decorators/test_python.py         |  3 +--
 8 files changed, 32 insertions(+), 15 deletions(-)

diff --git a/devel-common/src/tests_common/test_utils/version_compat.py 
b/devel-common/src/tests_common/test_utils/version_compat.py
index 2be7fb788e0..4a7c8805364 100644
--- a/devel-common/src/tests_common/test_utils/version_compat.py
+++ b/devel-common/src/tests_common/test_utils/version_compat.py
@@ -36,6 +36,11 @@ AIRFLOW_V_3_0_1 = get_base_airflow_version_tuple() == (3, 0, 
1)
 AIRFLOW_V_3_0_PLUS = get_base_airflow_version_tuple() >= (3, 0, 0)
 AIRFLOW_V_3_1_PLUS = get_base_airflow_version_tuple() >= (3, 1, 0)
 
+if AIRFLOW_V_3_1_PLUS:
+    from airflow.models.xcom import XCOM_RETURN_KEY
+else:
+    from airflow.utils.xcom import XCOM_RETURN_KEY  # type: ignore[no-redef]
+
 
 def get_sqlalchemy_version_tuple() -> tuple[int, int, int]:
     import sqlalchemy
@@ -47,3 +52,13 @@ def get_sqlalchemy_version_tuple() -> tuple[int, int, int]:
 
 SQLALCHEMY_V_1_4 = (1, 4, 0) <= get_sqlalchemy_version_tuple() < (2, 0, 0)
 SQLALCHEMY_V_2_0 = (2, 0, 0) <= get_sqlalchemy_version_tuple() < (2, 1, 0)
+
+
+__all__ = [
+    "AIRFLOW_V_3_0_PLUS",
+    "AIRFLOW_V_3_0_1",
+    "AIRFLOW_V_3_1_PLUS",
+    "SQLALCHEMY_V_1_4",
+    "SQLALCHEMY_V_2_0",
+    "XCOM_RETURN_KEY",
+]
diff --git 
a/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/operators/pod.py
 
b/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/operators/pod.py
index a46713ef3f3..994c54822a7 100644
--- 
a/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/operators/pod.py
+++ 
b/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/operators/pod.py
@@ -80,11 +80,10 @@ from airflow.providers.cncf.kubernetes.utils.pod_manager 
import (
     container_is_succeeded,
     get_container_termination_message,
 )
-from airflow.providers.cncf.kubernetes.version_compat import BaseOperator
+from airflow.providers.cncf.kubernetes.version_compat import XCOM_RETURN_KEY, 
BaseOperator
 from airflow.settings import pod_mutation_hook
 from airflow.utils import yaml
 from airflow.utils.helpers import prune_dict, validate_key
-from airflow.utils.xcom import XCOM_RETURN_KEY
 from airflow.version import version as airflow_version
 
 if TYPE_CHECKING:
diff --git 
a/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/version_compat.py
 
b/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/version_compat.py
index 7fb3a9cd5c3..fd909dbbcfb 100644
--- 
a/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/version_compat.py
+++ 
b/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/version_compat.py
@@ -36,10 +36,12 @@ AIRFLOW_V_3_0_PLUS = get_base_airflow_version_tuple() >= 
(3, 0, 0)
 AIRFLOW_V_3_1_PLUS = get_base_airflow_version_tuple() >= (3, 1, 0)
 
 if AIRFLOW_V_3_1_PLUS:
+    from airflow.models.xcom import XCOM_RETURN_KEY
     from airflow.sdk import BaseHook, BaseOperator
 else:
     from airflow.hooks.base import BaseHook  # type: 
ignore[attr-defined,no-redef]
     from airflow.models import BaseOperator  # type: ignore[no-redef]
+    from airflow.utils.xcom import XCOM_RETURN_KEY  # type: ignore[no-redef]
 
 if AIRFLOW_V_3_0_PLUS:
     from airflow.sdk import BaseSensorOperator
@@ -61,4 +63,5 @@ __all__ = [
     "DecoratedOperator",
     "TaskDecorator",
     "task_decorator_factory",
+    "XCOM_RETURN_KEY",
 ]
diff --git 
a/providers/cncf/kubernetes/tests/unit/cncf/kubernetes/operators/test_pod.py 
b/providers/cncf/kubernetes/tests/unit/cncf/kubernetes/operators/test_pod.py
index db6f966ee6f..1818e42b785 100644
--- a/providers/cncf/kubernetes/tests/unit/cncf/kubernetes/operators/test_pod.py
+++ b/providers/cncf/kubernetes/tests/unit/cncf/kubernetes/operators/test_pod.py
@@ -54,7 +54,6 @@ if TYPE_CHECKING:
     from airflow.utils.context import Context
 from airflow.utils.session import create_session
 from airflow.utils.types import DagRunType
-from airflow.utils.xcom import XCOM_RETURN_KEY
 
 from tests_common.test_utils import db
 from tests_common.test_utils.version_compat import AIRFLOW_V_3_0_PLUS
@@ -1575,7 +1574,7 @@ class TestKubernetesPodOperator:
         with pytest.raises(AirflowException):
             k.execute(context=context)
 
-        context["ti"].xcom_push.assert_called_with(XCOM_RETURN_KEY, {"Test 
key": "Test value"})
+        context["ti"].xcom_push.assert_called_with("return_value", {"Test 
key": "Test value"})
 
     @pytest.mark.asyncio
     @pytest.mark.parametrize(
diff --git a/providers/common/io/tests/unit/common/io/xcom/test_backend.py 
b/providers/common/io/tests/unit/common/io/xcom/test_backend.py
index f85a4cfa0c7..e1b242daf42 100644
--- a/providers/common/io/tests/unit/common/io/xcom/test_backend.py
+++ b/providers/common/io/tests/unit/common/io/xcom/test_backend.py
@@ -25,11 +25,10 @@ import airflow.models.xcom
 from airflow.providers.common.io.xcom.backend import XComObjectStorageBackend
 from airflow.providers.standard.operators.empty import EmptyOperator
 from airflow.utils import timezone
-from airflow.utils.xcom import XCOM_RETURN_KEY
 
 from tests_common.test_utils import db
 from tests_common.test_utils.config import conf_vars
-from tests_common.test_utils.version_compat import AIRFLOW_V_3_0_PLUS
+from tests_common.test_utils.version_compat import AIRFLOW_V_3_0_PLUS, 
XCOM_RETURN_KEY
 
 pytestmark = [pytest.mark.db_test]
 
diff --git 
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/operators/msgraph.py
 
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/operators/msgraph.py
index f4f6e91fea4..d877eca02c6 100644
--- 
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/operators/msgraph.py
+++ 
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/operators/msgraph.py
@@ -32,8 +32,7 @@ from airflow.providers.microsoft.azure.triggers.msgraph 
import (
     MSGraphTrigger,
     ResponseSerializer,
 )
-from airflow.providers.microsoft.azure.version_compat import BaseOperator
-from airflow.utils.xcom import XCOM_RETURN_KEY
+from airflow.providers.microsoft.azure.version_compat import XCOM_RETURN_KEY, 
BaseOperator
 
 if TYPE_CHECKING:
     from io import BytesIO
diff --git 
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/version_compat.py
 
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/version_compat.py
index 38251008668..92c90e6a938 100644
--- 
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/version_compat.py
+++ 
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/version_compat.py
@@ -35,11 +35,6 @@ def get_base_airflow_version_tuple() -> tuple[int, int, int]:
 AIRFLOW_V_3_0_PLUS = get_base_airflow_version_tuple() >= (3, 0, 0)
 AIRFLOW_V_3_1_PLUS = get_base_airflow_version_tuple() >= (3, 1, 0)
 
-if AIRFLOW_V_3_1_PLUS:
-    from airflow.sdk import BaseHook
-else:
-    from airflow.hooks.base import BaseHook  # type: 
ignore[attr-defined,no-redef]
-
 if AIRFLOW_V_3_0_PLUS:
     from airflow.sdk import (
         BaseOperator,
@@ -50,10 +45,19 @@ else:
     from airflow.models import BaseOperator, BaseOperatorLink  # type: 
ignore[no-redef]
     from airflow.sensors.base import BaseSensorOperator  # type: 
ignore[no-redef]
 
+if AIRFLOW_V_3_1_PLUS:
+    from airflow.models.xcom import XCOM_RETURN_KEY
+    from airflow.sdk import BaseHook
+else:
+    from airflow.hooks.base import BaseHook  # type: 
ignore[attr-defined,no-redef]
+    from airflow.utils.xcom import XCOM_RETURN_KEY  # type: ignore[no-redef]
+
 __all__ = [
     "AIRFLOW_V_3_0_PLUS",
+    "AIRFLOW_V_3_1_PLUS",
     "BaseHook",
     "BaseOperator",
     "BaseOperatorLink",
     "BaseSensorOperator",
+    "XCOM_RETURN_KEY",
 ]
diff --git a/providers/standard/tests/unit/standard/decorators/test_python.py 
b/providers/standard/tests/unit/standard/decorators/test_python.py
index e617fa8c88b..1d65c02f533 100644
--- a/providers/standard/tests/unit/standard/decorators/test_python.py
+++ b/providers/standard/tests/unit/standard/decorators/test_python.py
@@ -28,9 +28,8 @@ from airflow.models.taskmap import TaskMap
 from airflow.utils import timezone
 from airflow.utils.task_instance_session import 
set_current_task_instance_session
 from airflow.utils.trigger_rule import TriggerRule
-from airflow.utils.xcom import XCOM_RETURN_KEY
 
-from tests_common.test_utils.version_compat import AIRFLOW_V_3_0_1, 
AIRFLOW_V_3_0_PLUS
+from tests_common.test_utils.version_compat import AIRFLOW_V_3_0_1, 
AIRFLOW_V_3_0_PLUS, XCOM_RETURN_KEY
 from unit.standard.operators.test_python import BasePythonTest
 
 if AIRFLOW_V_3_0_PLUS:

Reply via email to