Skip to content

Commit 390a6d7

Browse files
committed
fix: Condtionally import from airflow core
1 parent f2e48bc commit 390a6d7

File tree

4 files changed

+30
-3
lines changed

4 files changed

+30
-3
lines changed

airflow_dbt_python/hooks/fs/local.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,12 @@
1010
from pathlib import Path
1111
from typing import Optional
1212

13-
from airflow.hooks.filesystem import FSHook
13+
from airflow_dbt_python.utils.version import AIRFLOW_V_3_0_PLUS
14+
15+
if AIRFLOW_V_3_0_PLUS:
16+
from airflow.providers.standard.hooks.filesystem import FSHook
17+
else:
18+
from airflow.hooks.filesystem import FSHook
1419

1520
from airflow_dbt_python.hooks.fs import DbtFSHook
1621
from airflow_dbt_python.utils.url import URL

airflow_dbt_python/operators/dbt.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,15 @@
1010
from typing import TYPE_CHECKING, Any, Dict, Optional, Union
1111

1212
from airflow.exceptions import AirflowException
13-
from airflow.models.baseoperator import BaseOperator
1413
from airflow.models.xcom import XCOM_RETURN_KEY
1514

1615
from airflow_dbt_python.utils.enums import LogFormat
16+
from airflow_dbt_python.utils.version import AIRFLOW_V_3_0_PLUS
17+
18+
if AIRFLOW_V_3_0_PLUS:
19+
from airflow.sdk import BaseOperator
20+
else:
21+
from airflow.models import BaseOperator
1722

1823
if TYPE_CHECKING:
1924
from dbt.contracts.results import RunResult

airflow_dbt_python/utils/version.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,14 @@
2828

2929
DBT_INSTALLED_1_8 = DBT_1_8 < installed < DBT_1_9
3030
DBT_INSTALLED_1_9 = DBT_1_9 < installed < DBT_2_0
31+
32+
33+
def _get_base_airflow_version_tuple() -> tuple[int, int, int]:
34+
from airflow import __version__
35+
from packaging.version import Version
36+
37+
airflow_version = Version(__version__)
38+
return airflow_version.major, airflow_version.minor, airflow_version.micro
39+
40+
41+
AIRFLOW_V_3_0_PLUS = _get_base_airflow_version_tuple() >= (3, 0, 0)

tests/dags/test_dbt_dags.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,15 @@
1010
from dbt.contracts.results import RunStatus, TestStatus
1111

1212
airflow = pytest.importorskip("airflow", minversion="2.2")
13+
from airflow_dbt_python.utils.version import AIRFLOW_V_3_0_PLUS
14+
15+
if AIRFLOW_V_3_0_PLUS:
16+
from airflow.sdk import DAG
17+
else:
18+
from airflow import DAG
1319

14-
from airflow import DAG, settings
1520
from airflow import __version__ as airflow_version
21+
from airflow import settings
1622
from airflow.models import DagBag, DagRun
1723
from airflow.models.serialized_dag import SerializedDagModel
1824
from airflow.utils.state import DagRunState, TaskInstanceState

0 commit comments

Comments
 (0)