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 026444b1ad2 Migrate `ftp` provider to `common.compat` (#57127)
026444b1ad2 is described below

commit 026444b1ad245e5175f0de958afc329819d68cf0
Author: Bhavani Ravi <[email protected]>
AuthorDate: Thu Oct 23 20:57:54 2025 +0530

    Migrate `ftp` provider to `common.compat` (#57127)
---
 providers/ftp/pyproject.toml                              |  1 +
 providers/ftp/src/airflow/providers/ftp/hooks/ftp.py      |  2 +-
 providers/ftp/src/airflow/providers/ftp/operators/ftp.py  |  2 +-
 providers/ftp/src/airflow/providers/ftp/sensors/ftp.py    |  8 ++------
 providers/ftp/src/airflow/providers/ftp/version_compat.py | 13 +------------
 5 files changed, 6 insertions(+), 20 deletions(-)

diff --git a/providers/ftp/pyproject.toml b/providers/ftp/pyproject.toml
index 06d0effe2a5..bde214182f7 100644
--- a/providers/ftp/pyproject.toml
+++ b/providers/ftp/pyproject.toml
@@ -58,6 +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.8.0",
 ]
 
 # The optional dependencies should be modified in place in the generated file
diff --git a/providers/ftp/src/airflow/providers/ftp/hooks/ftp.py 
b/providers/ftp/src/airflow/providers/ftp/hooks/ftp.py
index 89131dfc2cf..808ed49ac69 100644
--- a/providers/ftp/src/airflow/providers/ftp/hooks/ftp.py
+++ b/providers/ftp/src/airflow/providers/ftp/hooks/ftp.py
@@ -23,7 +23,7 @@ import logging
 from collections.abc import Callable
 from typing import Any, cast
 
-from airflow.providers.ftp.version_compat import BaseHook
+from airflow.providers.common.compat.sdk import BaseHook
 
 logger = logging.getLogger(__name__)
 
diff --git a/providers/ftp/src/airflow/providers/ftp/operators/ftp.py 
b/providers/ftp/src/airflow/providers/ftp/operators/ftp.py
index 8c055eaa64e..23a111b443e 100644
--- a/providers/ftp/src/airflow/providers/ftp/operators/ftp.py
+++ b/providers/ftp/src/airflow/providers/ftp/operators/ftp.py
@@ -27,8 +27,8 @@ from functools import cached_property
 from pathlib import Path
 from typing import Any
 
+from airflow.providers.common.compat.sdk import BaseOperator
 from airflow.providers.ftp.hooks.ftp import FTPHook, FTPSHook
-from airflow.providers.ftp.version_compat import BaseOperator
 
 
 class FTPOperation:
diff --git a/providers/ftp/src/airflow/providers/ftp/sensors/ftp.py 
b/providers/ftp/src/airflow/providers/ftp/sensors/ftp.py
index f0e3f31d5ba..7fc38b22587 100644
--- a/providers/ftp/src/airflow/providers/ftp/sensors/ftp.py
+++ b/providers/ftp/src/airflow/providers/ftp/sensors/ftp.py
@@ -22,15 +22,11 @@ import re
 from collections.abc import Sequence
 from typing import TYPE_CHECKING
 
+from airflow.providers.common.compat.sdk import BaseSensorOperator
 from airflow.providers.ftp.hooks.ftp import FTPHook, FTPSHook
-from airflow.providers.ftp.version_compat import BaseSensorOperator
 
 if TYPE_CHECKING:
-    try:
-        from airflow.sdk.definitions.context import Context
-    except ImportError:
-        # TODO: Remove once provider drops support for Airflow 2
-        from airflow.utils.context import Context
+    from airflow.providers.common.compat.sdk import Context
 
 
 class FTPSensor(BaseSensorOperator):
diff --git a/providers/ftp/src/airflow/providers/ftp/version_compat.py 
b/providers/ftp/src/airflow/providers/ftp/version_compat.py
index 1aebc0c57ed..f5bb3ae555c 100644
--- a/providers/ftp/src/airflow/providers/ftp/version_compat.py
+++ b/providers/ftp/src/airflow/providers/ftp/version_compat.py
@@ -35,15 +35,4 @@ 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: bool = get_base_airflow_version_tuple() >= (3, 1, 0)
 
-if AIRFLOW_V_3_0_PLUS:
-    from airflow.sdk import BaseOperator, BaseSensorOperator
-else:
-    from airflow.models import BaseOperator
-    from airflow.sensors.base import BaseSensorOperator  # type: 
ignore[no-redef]
-
-if AIRFLOW_V_3_1_PLUS:
-    from airflow.sdk import BaseHook
-else:
-    from airflow.hooks.base import BaseHook  # type: 
ignore[attr-defined,no-redef]
-
-__all__ = ["AIRFLOW_V_3_0_PLUS", "AIRFLOW_V_3_1_PLUS", "BaseHook", 
"BaseOperator", "BaseSensorOperator"]
+__all__ = ["AIRFLOW_V_3_0_PLUS", "AIRFLOW_V_3_1_PLUS"]

Reply via email to