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 eb6f2c3e387 Migrate Docker provider to `common.compat` (#57117)
eb6f2c3e387 is described below

commit eb6f2c3e387728ef1e6de41ffa103ec7e48b6731
Author: Bhavani Ravi <[email protected]>
AuthorDate: Sat Oct 25 02:27:23 2025 +0530

    Migrate Docker provider to `common.compat` (#57117)
    
    * Migrate Docker provider to common.compat
    
    * chore: keep BaseOperator in version compat
---
 providers/docker/pyproject.toml                                    | 1 +
 providers/docker/src/airflow/providers/docker/decorators/docker.py | 7 +------
 providers/docker/src/airflow/providers/docker/hooks/docker.py      | 4 ++--
 providers/docker/src/airflow/providers/docker/operators/docker.py  | 2 +-
 .../docker/src/airflow/providers/docker/operators/docker_swarm.py  | 6 +-----
 providers/docker/src/airflow/providers/docker/version_compat.py    | 3 ---
 6 files changed, 6 insertions(+), 17 deletions(-)

diff --git a/providers/docker/pyproject.toml b/providers/docker/pyproject.toml
index 3454bb9da07..773ed98fa38 100644
--- a/providers/docker/pyproject.toml
+++ b/providers/docker/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",
     "docker>=7.1.0",
     "python-dotenv>=0.21.0",
 ]
diff --git a/providers/docker/src/airflow/providers/docker/decorators/docker.py 
b/providers/docker/src/airflow/providers/docker/decorators/docker.py
index 807902d5e81..c64c9560b59 100644
--- a/providers/docker/src/airflow/providers/docker/decorators/docker.py
+++ b/providers/docker/src/airflow/providers/docker/decorators/docker.py
@@ -35,14 +35,9 @@ from airflow.providers.docker.operators.docker import 
DockerOperator
 if TYPE_CHECKING:
     from typing import Literal
 
+    from airflow.providers.common.compat.sdk import Context
     from airflow.sdk.bases.decorator import TaskDecorator
 
-    if AIRFLOW_V_3_0_PLUS:
-        from airflow.sdk.definitions.context import Context
-    else:
-        # TODO: Remove once provider drops support for Airflow 2
-        from airflow.utils.context import Context
-
     Serializer = Literal["pickle", "dill", "cloudpickle"]
 
 try:
diff --git a/providers/docker/src/airflow/providers/docker/hooks/docker.py 
b/providers/docker/src/airflow/providers/docker/hooks/docker.py
index 452a45b83fb..5f1a02f5830 100644
--- a/providers/docker/src/airflow/providers/docker/hooks/docker.py
+++ b/providers/docker/src/airflow/providers/docker/hooks/docker.py
@@ -27,10 +27,10 @@ from docker.constants import DEFAULT_TIMEOUT_SECONDS
 from docker.errors import APIError, DockerException
 
 from airflow.exceptions import AirflowException, AirflowNotFoundException
-from airflow.providers.docker.version_compat import BaseHook
+from airflow.providers.common.compat.sdk import BaseHook
 
 if TYPE_CHECKING:
-    from airflow.models import Connection
+    from airflow.providers.common.compat.sdk import Connection
 
 
 class DockerHook(BaseHook):
diff --git a/providers/docker/src/airflow/providers/docker/operators/docker.py 
b/providers/docker/src/airflow/providers/docker/operators/docker.py
index dc8065d79cc..045c82d807a 100644
--- a/providers/docker/src/airflow/providers/docker/operators/docker.py
+++ b/providers/docker/src/airflow/providers/docker/operators/docker.py
@@ -45,7 +45,7 @@ if TYPE_CHECKING:
     from docker import APIClient
     from docker.types import DeviceRequest
 
-    from airflow.sdk.definitions.context import Context
+    from airflow.providers.common.compat.sdk import Context
     from airflow.sdk.types import Logger
 
 
diff --git 
a/providers/docker/src/airflow/providers/docker/operators/docker_swarm.py 
b/providers/docker/src/airflow/providers/docker/operators/docker_swarm.py
index b5a3119b37d..dea49f36f2e 100644
--- a/providers/docker/src/airflow/providers/docker/operators/docker_swarm.py
+++ b/providers/docker/src/airflow/providers/docker/operators/docker_swarm.py
@@ -32,11 +32,7 @@ from airflow.providers.docker.operators.docker import 
DockerOperator
 from airflow.utils.strings import get_random_string
 
 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 DockerSwarmOperator(DockerOperator):
diff --git a/providers/docker/src/airflow/providers/docker/version_compat.py 
b/providers/docker/src/airflow/providers/docker/version_compat.py
index 9ce966132fd..29c46806a0a 100644
--- a/providers/docker/src/airflow/providers/docker/version_compat.py
+++ b/providers/docker/src/airflow/providers/docker/version_compat.py
@@ -40,16 +40,13 @@ AIRFLOW_V_3_1_PLUS: bool = get_base_airflow_version_tuple() 
>= (3, 1, 0)
 # This is needed for DecoratedOperator compatibility
 if AIRFLOW_V_3_1_PLUS:
     from airflow.sdk import (
-        BaseHook,
         BaseOperator,
     )
 else:
-    from airflow.hooks.base import BaseHook  # type: 
ignore[attr-defined,no-redef]
     from airflow.models import BaseOperator
 
 __all__ = [
     "AIRFLOW_V_3_0_PLUS",
     "AIRFLOW_V_3_1_PLUS",
-    "BaseHook",
     "BaseOperator",
 ]

Reply via email to