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
 

Reply via email to