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 1a610af8ce3 Migrate dbt.cloud provider to ``common.compat`` (#56999)
1a610af8ce3 is described below
commit 1a610af8ce38be98fba38397cda86a842a0d0ae3
Author: Kaxil Naik <[email protected]>
AuthorDate: Wed Oct 22 03:47:46 2025 +0100
Migrate dbt.cloud provider to ``common.compat`` (#56999)
Replace version-specific conditional imports with ``common.compat`` layer.
This standardizes compatibility handling across Airflow 2.x and 3.x.
---
providers/dbt/cloud/pyproject.toml | 2 +-
.../cloud/src/airflow/providers/dbt/cloud/operators/dbt.py | 6 +-----
.../dbt/cloud/src/airflow/providers/dbt/cloud/sensors/dbt.py | 7 +------
.../cloud/src/airflow/providers/dbt/cloud/version_compat.py | 12 ------------
.../dbt/cloud/tests/unit/dbt/cloud/operators/test_dbt.py | 2 +-
5 files changed, 4 insertions(+), 25 deletions(-)
diff --git a/providers/dbt/cloud/pyproject.toml
b/providers/dbt/cloud/pyproject.toml
index 6a1bd380402..474f2e056ae 100644
--- a/providers/dbt/cloud/pyproject.toml
+++ b/providers/dbt/cloud/pyproject.toml
@@ -58,7 +58,7 @@ requires-python = ">=3.10"
# After you modify the dependencies, and rebuild your Breeze CI image with
``breeze ci-image build``
dependencies = [
"apache-airflow>=2.10.0",
- "apache-airflow-providers-common-compat>=1.6.0",
+ "apache-airflow-providers-common-compat>=1.7.4", # + TODO: bump to next
version
"apache-airflow-providers-http",
"asgiref>=2.3.0",
"aiohttp>=3.9.2",
diff --git
a/providers/dbt/cloud/src/airflow/providers/dbt/cloud/operators/dbt.py
b/providers/dbt/cloud/src/airflow/providers/dbt/cloud/operators/dbt.py
index 3ac8c6d544f..e03ba21a301 100644
--- a/providers/dbt/cloud/src/airflow/providers/dbt/cloud/operators/dbt.py
+++ b/providers/dbt/cloud/src/airflow/providers/dbt/cloud/operators/dbt.py
@@ -24,6 +24,7 @@ from pathlib import Path
from typing import TYPE_CHECKING, Any
from airflow.configuration import conf
+from airflow.providers.common.compat.sdk import BaseOperator,
BaseOperatorLink, XCom
from airflow.providers.dbt.cloud.hooks.dbt import (
DbtCloudHook,
DbtCloudJobRunException,
@@ -32,11 +33,6 @@ from airflow.providers.dbt.cloud.hooks.dbt import (
)
from airflow.providers.dbt.cloud.triggers.dbt import DbtCloudRunJobTrigger
from airflow.providers.dbt.cloud.utils.openlineage import
generate_openlineage_events_from_dbt_cloud_run
-from airflow.providers.dbt.cloud.version_compat import (
- BaseOperator,
- BaseOperatorLink,
- XCom,
-)
if TYPE_CHECKING:
from airflow.providers.openlineage.extractors import OperatorLineage
diff --git a/providers/dbt/cloud/src/airflow/providers/dbt/cloud/sensors/dbt.py
b/providers/dbt/cloud/src/airflow/providers/dbt/cloud/sensors/dbt.py
index 374e2c144cb..0a7644a56a9 100644
--- a/providers/dbt/cloud/src/airflow/providers/dbt/cloud/sensors/dbt.py
+++ b/providers/dbt/cloud/src/airflow/providers/dbt/cloud/sensors/dbt.py
@@ -22,15 +22,10 @@ from typing import TYPE_CHECKING, Any
from airflow.configuration import conf
from airflow.exceptions import AirflowException
+from airflow.providers.common.compat.sdk import BaseSensorOperator
from airflow.providers.dbt.cloud.hooks.dbt import DbtCloudHook,
DbtCloudJobRunException, DbtCloudJobRunStatus
from airflow.providers.dbt.cloud.triggers.dbt import DbtCloudRunJobTrigger
from airflow.providers.dbt.cloud.utils.openlineage import
generate_openlineage_events_from_dbt_cloud_run
-from airflow.providers.dbt.cloud.version_compat import AIRFLOW_V_3_0_PLUS
-
-if AIRFLOW_V_3_0_PLUS:
- from airflow.sdk import BaseSensorOperator
-else:
- from airflow.sensors.base import BaseSensorOperator # type:
ignore[no-redef]
if TYPE_CHECKING:
from airflow.providers.openlineage.extractors import OperatorLineage
diff --git
a/providers/dbt/cloud/src/airflow/providers/dbt/cloud/version_compat.py
b/providers/dbt/cloud/src/airflow/providers/dbt/cloud/version_compat.py
index 940fa8385a5..0956edd2111 100644
--- a/providers/dbt/cloud/src/airflow/providers/dbt/cloud/version_compat.py
+++ b/providers/dbt/cloud/src/airflow/providers/dbt/cloud/version_compat.py
@@ -34,18 +34,6 @@ def get_base_airflow_version_tuple() -> tuple[int, int, int]:
AIRFLOW_V_3_0_PLUS = get_base_airflow_version_tuple() >= (3, 0, 0)
-if AIRFLOW_V_3_0_PLUS:
- from airflow.sdk import BaseOperator, BaseOperatorLink, BaseSensorOperator
- from airflow.sdk.execution_time.xcom import XCom
-else:
- from airflow.models import BaseOperator, XCom
- from airflow.models.baseoperatorlink import BaseOperatorLink # type:
ignore[no-redef]
- from airflow.sensors.base import BaseSensorOperator # type:
ignore[no-redef]
-
__all__ = [
"AIRFLOW_V_3_0_PLUS",
- "BaseOperator",
- "BaseSensorOperator",
- "BaseOperatorLink",
- "XCom",
]
diff --git a/providers/dbt/cloud/tests/unit/dbt/cloud/operators/test_dbt.py
b/providers/dbt/cloud/tests/unit/dbt/cloud/operators/test_dbt.py
index 271b67e3ba6..4292aea3aa1 100644
--- a/providers/dbt/cloud/tests/unit/dbt/cloud/operators/test_dbt.py
+++ b/providers/dbt/cloud/tests/unit/dbt/cloud/operators/test_dbt.py
@@ -24,6 +24,7 @@ import pytest
from airflow.exceptions import TaskDeferred
from airflow.models import DAG, Connection
+from airflow.providers.common.compat.sdk import timezone
from airflow.providers.dbt.cloud.hooks.dbt import DbtCloudHook,
DbtCloudJobRunException, DbtCloudJobRunStatus
from airflow.providers.dbt.cloud.operators.dbt import (
DbtCloudGetJobRunArtifactOperator,
@@ -31,7 +32,6 @@ from airflow.providers.dbt.cloud.operators.dbt import (
DbtCloudRunJobOperator,
)
from airflow.providers.dbt.cloud.triggers.dbt import DbtCloudRunJobTrigger
-from airflow.utils import timezone
from tests_common.test_utils.version_compat import AIRFLOW_V_3_0_PLUS