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: