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",
]