This is an automated email from the ASF dual-hosted git repository.
amoghdesai 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 5d5a6d6d0a6 Replace BaseHook to Task SDK for microsoft azure (#52821)
5d5a6d6d0a6 is described below
commit 5d5a6d6d0a6e38e90876b04a94c3a1d624d45e27
Author: fweilun <[email protected]>
AuthorDate: Sat Jul 5 23:01:49 2025 +0800
Replace BaseHook to Task SDK for microsoft azure (#52821)
---
.../azure/src/airflow/providers/microsoft/azure/fs/adls.py | 6 +-----
.../azure/src/airflow/providers/microsoft/azure/hooks/adx.py | 6 +-----
.../azure/src/airflow/providers/microsoft/azure/hooks/asb.py | 6 +-----
.../src/airflow/providers/microsoft/azure/hooks/base_azure.py | 6 +-----
.../azure/src/airflow/providers/microsoft/azure/hooks/batch.py | 6 +-----
.../providers/microsoft/azure/hooks/container_registry.py | 6 +-----
.../providers/microsoft/azure/hooks/container_volume.py | 6 +-----
.../src/airflow/providers/microsoft/azure/hooks/cosmos.py | 6 +-----
.../airflow/providers/microsoft/azure/hooks/data_factory.py | 6 +-----
.../src/airflow/providers/microsoft/azure/hooks/data_lake.py | 6 +-----
.../src/airflow/providers/microsoft/azure/hooks/fileshare.py | 6 +-----
.../src/airflow/providers/microsoft/azure/hooks/msgraph.py | 6 +-----
.../src/airflow/providers/microsoft/azure/hooks/synapse.py | 6 +-----
.../azure/src/airflow/providers/microsoft/azure/hooks/wasb.py | 6 +-----
.../providers/microsoft/azure/operators/data_factory.py | 10 ++++------
.../src/airflow/providers/microsoft/azure/operators/synapse.py | 10 ++++------
.../src/airflow/providers/microsoft/azure/version_compat.py | 7 +++++++
17 files changed, 29 insertions(+), 82 deletions(-)
diff --git
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/fs/adls.py
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/fs/adls.py
index ef9fe01d487..299d9f775df 100644
--- a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/fs/adls.py
+++ b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/fs/adls.py
@@ -21,11 +21,7 @@ from typing import TYPE_CHECKING, Any
from azure.identity import ClientSecretCredential
from airflow.providers.microsoft.azure.utils import get_field,
parse_blob_account_url
-
-try:
- from airflow.sdk import BaseHook
-except ImportError:
- from airflow.hooks.base import BaseHook # type:
ignore[attr-defined,no-redef]
+from airflow.providers.microsoft.azure.version_compat import BaseHook
if TYPE_CHECKING:
from fsspec import AbstractFileSystem
diff --git
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/adx.py
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/adx.py
index 819725ca2c3..d83cab1c05b 100644
---
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/adx.py
+++
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/adx.py
@@ -38,11 +38,7 @@ from airflow.providers.microsoft.azure.utils import (
add_managed_identity_connection_widgets,
get_sync_default_azure_credential,
)
-
-try:
- from airflow.sdk import BaseHook
-except ImportError:
- from airflow.hooks.base import BaseHook # type:
ignore[attr-defined,no-redef]
+from airflow.providers.microsoft.azure.version_compat import BaseHook
if TYPE_CHECKING:
from azure.kusto.data.response import KustoResponseDataSet
diff --git
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/asb.py
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/asb.py
index a49c9598d49..cac10ca0b3e 100644
---
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/asb.py
+++
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/asb.py
@@ -42,11 +42,7 @@ from airflow.providers.microsoft.azure.utils import (
get_field,
get_sync_default_azure_credential,
)
-
-try:
- from airflow.sdk import BaseHook
-except ImportError:
- from airflow.hooks.base import BaseHook # type:
ignore[attr-defined,no-redef]
+from airflow.providers.microsoft.azure.version_compat import BaseHook
if TYPE_CHECKING:
import datetime
diff --git
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/base_azure.py
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/base_azure.py
index 2a625becba7..2a59234e0a4 100644
---
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/base_azure.py
+++
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/base_azure.py
@@ -26,11 +26,7 @@ from airflow.providers.microsoft.azure.utils import (
AzureIdentityCredentialAdapter,
add_managed_identity_connection_widgets,
)
-
-try:
- from airflow.sdk import BaseHook
-except ImportError:
- from airflow.hooks.base import BaseHook # type:
ignore[attr-defined,no-redef]
+from airflow.providers.microsoft.azure.version_compat import BaseHook
class AzureBaseHook(BaseHook):
diff --git
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/batch.py
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/batch.py
index e60ff635978..96494e56f5e 100644
---
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/batch.py
+++
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/batch.py
@@ -30,11 +30,7 @@ from airflow.providers.microsoft.azure.utils import (
add_managed_identity_connection_widgets,
get_field,
)
-
-try:
- from airflow.sdk import BaseHook
-except ImportError:
- from airflow.hooks.base import BaseHook # type:
ignore[attr-defined,no-redef]
+from airflow.providers.microsoft.azure.version_compat import BaseHook
from airflow.utils import timezone
if TYPE_CHECKING:
diff --git
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/container_registry.py
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/container_registry.py
index d53f1dd3176..521665caf12 100644
---
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/container_registry.py
+++
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/container_registry.py
@@ -30,11 +30,7 @@ from airflow.providers.microsoft.azure.utils import (
get_field,
get_sync_default_azure_credential,
)
-
-try:
- from airflow.sdk import BaseHook
-except ImportError:
- from airflow.hooks.base import BaseHook # type:
ignore[attr-defined,no-redef]
+from airflow.providers.microsoft.azure.version_compat import BaseHook
class AzureContainerRegistryHook(BaseHook):
diff --git
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/container_volume.py
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/container_volume.py
index c652940cb52..ed6a063011b 100644
---
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/container_volume.py
+++
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/container_volume.py
@@ -26,11 +26,7 @@ from airflow.providers.microsoft.azure.utils import (
get_field,
get_sync_default_azure_credential,
)
-
-try:
- from airflow.sdk import BaseHook
-except ImportError:
- from airflow.hooks.base import BaseHook # type:
ignore[attr-defined,no-redef]
+from airflow.providers.microsoft.azure.version_compat import BaseHook
class AzureContainerVolumeHook(BaseHook):
diff --git
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/cosmos.py
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/cosmos.py
index 296c49297ad..8c695e1cd68 100644
---
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/cosmos.py
+++
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/cosmos.py
@@ -41,11 +41,7 @@ from airflow.providers.microsoft.azure.utils import (
get_field,
get_sync_default_azure_credential,
)
-
-try:
- from airflow.sdk import BaseHook
-except ImportError:
- from airflow.hooks.base import BaseHook # type:
ignore[attr-defined,no-redef]
+from airflow.providers.microsoft.azure.version_compat import BaseHook
if TYPE_CHECKING:
PartitionKeyType = str | list[str]
diff --git
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/data_factory.py
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/data_factory.py
index fc33473f5f9..c49b066ea26 100644
---
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/data_factory.py
+++
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/data_factory.py
@@ -54,11 +54,7 @@ from airflow.providers.microsoft.azure.utils import (
get_async_default_azure_credential,
get_sync_default_azure_credential,
)
-
-try:
- from airflow.sdk import BaseHook
-except ImportError:
- from airflow.hooks.base import BaseHook # type:
ignore[attr-defined,no-redef]
+from airflow.providers.microsoft.azure.version_compat import BaseHook
if TYPE_CHECKING:
from azure.core.polling import LROPoller
diff --git
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/data_lake.py
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/data_lake.py
index c132a68f532..43fad25cf57 100644
---
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/data_lake.py
+++
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/data_lake.py
@@ -39,11 +39,7 @@ from airflow.providers.microsoft.azure.utils import (
get_field,
get_sync_default_azure_credential,
)
-
-try:
- from airflow.sdk import BaseHook
-except ImportError:
- from airflow.hooks.base import BaseHook # type:
ignore[attr-defined,no-redef]
+from airflow.providers.microsoft.azure.version_compat import BaseHook
Credentials = ClientSecretCredential | AzureIdentityCredentialAdapter |
DefaultAzureCredential
diff --git
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/fileshare.py
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/fileshare.py
index f45c9766e7d..439be31bb03 100644
---
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/fileshare.py
+++
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/fileshare.py
@@ -25,11 +25,7 @@ from airflow.providers.microsoft.azure.utils import (
add_managed_identity_connection_widgets,
get_sync_default_azure_credential,
)
-
-try:
- from airflow.sdk import BaseHook
-except ImportError:
- from airflow.hooks.base import BaseHook # type:
ignore[attr-defined,no-redef]
+from airflow.providers.microsoft.azure.version_compat import BaseHook
class AzureFileShareHook(BaseHook):
diff --git
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/msgraph.py
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/msgraph.py
index 71f286fb641..2674b304f7a 100644
---
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/msgraph.py
+++
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/msgraph.py
@@ -50,11 +50,7 @@ from airflow.exceptions import (
AirflowException,
AirflowNotFoundException,
)
-
-try:
- from airflow.sdk import BaseHook
-except ImportError:
- from airflow.hooks.base import BaseHook # type:
ignore[attr-defined,no-redef]
+from airflow.providers.microsoft.azure.version_compat import BaseHook
if TYPE_CHECKING:
from azure.identity._internal.client_credential_base import
ClientCredentialBase
diff --git
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/synapse.py
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/synapse.py
index f470e4e375e..ceb86142aec 100644
---
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/synapse.py
+++
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/synapse.py
@@ -30,11 +30,7 @@ from airflow.providers.microsoft.azure.utils import (
get_field,
get_sync_default_azure_credential,
)
-
-try:
- from airflow.sdk import BaseHook
-except ImportError:
- from airflow.hooks.base import BaseHook # type:
ignore[attr-defined,no-redef]
+from airflow.providers.microsoft.azure.version_compat import BaseHook
if TYPE_CHECKING:
from azure.synapse.artifacts.models import CreateRunResponse, PipelineRun
diff --git
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/wasb.py
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/wasb.py
index b981e1bd049..9db0130ce77 100644
---
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/wasb.py
+++
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/wasb.py
@@ -52,11 +52,7 @@ from airflow.providers.microsoft.azure.utils import (
get_sync_default_azure_credential,
parse_blob_account_url,
)
-
-try:
- from airflow.sdk import BaseHook
-except ImportError:
- from airflow.hooks.base import BaseHook # type:
ignore[attr-defined,no-redef]
+from airflow.providers.microsoft.azure.version_compat import BaseHook
if TYPE_CHECKING:
from azure.core.credentials import TokenCredential
diff --git
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/operators/data_factory.py
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/operators/data_factory.py
index b733e74f391..8ad795e5a46 100644
---
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/operators/data_factory.py
+++
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/operators/data_factory.py
@@ -31,12 +31,10 @@ from airflow.providers.microsoft.azure.hooks.data_factory
import (
get_field,
)
from airflow.providers.microsoft.azure.triggers.data_factory import
AzureDataFactoryTrigger
-
-try:
- from airflow.sdk import BaseHook
-except ImportError:
- from airflow.hooks.base import BaseHook # type:
ignore[attr-defined,no-redef]
-from airflow.providers.microsoft.azure.version_compat import BaseOperator
+from airflow.providers.microsoft.azure.version_compat import (
+ BaseHook,
+ BaseOperator,
+)
from airflow.utils.log.logging_mixin import LoggingMixin
if TYPE_CHECKING:
diff --git
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/operators/synapse.py
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/operators/synapse.py
index 85f40863526..17c80b8bd45 100644
---
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/operators/synapse.py
+++
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/operators/synapse.py
@@ -29,12 +29,10 @@ from airflow.providers.microsoft.azure.hooks.synapse import
(
AzureSynapsePipelineRunStatus,
AzureSynapseSparkBatchRunStatus,
)
-from airflow.providers.microsoft.azure.version_compat import BaseOperator
-
-try:
- from airflow.sdk import BaseHook
-except ImportError:
- from airflow.hooks.base import BaseHook # type:
ignore[attr-defined,no-redef]
+from airflow.providers.microsoft.azure.version_compat import (
+ BaseHook,
+ BaseOperator,
+)
if TYPE_CHECKING:
from azure.synapse.spark.models import SparkBatchJobOptions
diff --git
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/version_compat.py
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/version_compat.py
index 8a5eeb817bf..38251008668 100644
---
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/version_compat.py
+++
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/version_compat.py
@@ -33,6 +33,12 @@ 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 = get_base_airflow_version_tuple() >= (3, 1, 0)
+
+if AIRFLOW_V_3_1_PLUS:
+ from airflow.sdk import BaseHook
+else:
+ from airflow.hooks.base import BaseHook # type:
ignore[attr-defined,no-redef]
if AIRFLOW_V_3_0_PLUS:
from airflow.sdk import (
@@ -46,6 +52,7 @@ else:
__all__ = [
"AIRFLOW_V_3_0_PLUS",
+ "BaseHook",
"BaseOperator",
"BaseOperatorLink",
"BaseSensorOperator",