apache-airflow-providers-microsoft-azure 8.4.0__tar.gz → 8.5.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/PKG-INFO +6 -6
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/README.rst +3 -3
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/__init__.py +1 -1
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/fs/adls.py +12 -23
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/get_provider_info.py +2 -1
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/hooks/asb.py +4 -4
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/hooks/base_azure.py +4 -4
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/hooks/container_registry.py +2 -2
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/hooks/container_volume.py +4 -4
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/hooks/cosmos.py +4 -4
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/hooks/data_factory.py +4 -4
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/hooks/data_lake.py +4 -4
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/hooks/fileshare.py +6 -4
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/hooks/synapse.py +8 -8
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/hooks/wasb.py +4 -4
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/operators/adls.py +3 -3
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/operators/container_instances.py +23 -23
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/pyproject.toml +3 -3
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/LICENSE +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/fs/__init__.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/hooks/__init__.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/hooks/adx.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/hooks/batch.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/hooks/container_instance.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/log/__init__.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/log/wasb_task_handler.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/operators/__init__.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/operators/adx.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/operators/asb.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/operators/batch.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/operators/cosmos.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/operators/data_factory.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/operators/synapse.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/operators/wasb_delete_blob.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/secrets/__init__.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/secrets/key_vault.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/sensors/__init__.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/sensors/cosmos.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/sensors/data_factory.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/sensors/wasb.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/transfers/__init__.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/transfers/azure_blob_to_gcs.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/transfers/local_to_adls.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/transfers/local_to_wasb.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/transfers/oracle_to_azure_data_lake.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/transfers/sftp_to_wasb.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/triggers/__init__.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/triggers/data_factory.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/triggers/wasb.py +0 -0
- {apache_airflow_providers_microsoft_azure-8.4.0 → apache_airflow_providers_microsoft_azure-8.5.0}/airflow/providers/microsoft/azure/utils.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: apache-airflow-providers-microsoft-azure
|
3
|
-
Version: 8.
|
3
|
+
Version: 8.5.0
|
4
4
|
Summary: Provider package apache-airflow-providers-microsoft-azure for Apache Airflow
|
5
5
|
Keywords: airflow-provider,microsoft.azure,airflow,integration
|
6
6
|
Author-email: Apache Software Foundation <dev@airflow.apache.org>
|
@@ -46,8 +46,8 @@ Requires-Dist: apache-airflow-providers-google ; extra == "google"
|
|
46
46
|
Requires-Dist: apache-airflow-providers-oracle ; extra == "oracle"
|
47
47
|
Requires-Dist: apache-airflow-providers-sftp ; extra == "sftp"
|
48
48
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
49
|
-
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/8.
|
50
|
-
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/8.
|
49
|
+
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/8.5.0/changelog.html
|
50
|
+
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/8.5.0
|
51
51
|
Project-URL: Slack Chat, https://s.apache.org/airflow-slack
|
52
52
|
Project-URL: Source Code, https://github.com/apache/airflow
|
53
53
|
Project-URL: Twitter, https://twitter.com/ApacheAirflow
|
@@ -100,7 +100,7 @@ Provides-Extra: sftp
|
|
100
100
|
|
101
101
|
Package ``apache-airflow-providers-microsoft-azure``
|
102
102
|
|
103
|
-
Release: ``8.
|
103
|
+
Release: ``8.5.0``
|
104
104
|
|
105
105
|
|
106
106
|
`Microsoft Azure <https://azure.microsoft.com/>`__
|
@@ -113,7 +113,7 @@ This is a provider package for ``microsoft.azure`` provider. All classes for thi
|
|
113
113
|
are in ``airflow.providers.microsoft.azure`` python package.
|
114
114
|
|
115
115
|
You can find package information and changelog for the provider
|
116
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/8.
|
116
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/8.5.0/>`_.
|
117
117
|
|
118
118
|
Installation
|
119
119
|
------------
|
@@ -176,4 +176,4 @@ Dependent package
|
|
176
176
|
==================================================================================================== ==========
|
177
177
|
|
178
178
|
The changelog for the provider package can be found in the
|
179
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/8.
|
179
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/8.5.0/changelog.html>`_.
|
@@ -42,7 +42,7 @@
|
|
42
42
|
|
43
43
|
Package ``apache-airflow-providers-microsoft-azure``
|
44
44
|
|
45
|
-
Release: ``8.
|
45
|
+
Release: ``8.5.0``
|
46
46
|
|
47
47
|
|
48
48
|
`Microsoft Azure <https://azure.microsoft.com/>`__
|
@@ -55,7 +55,7 @@ This is a provider package for ``microsoft.azure`` provider. All classes for thi
|
|
55
55
|
are in ``airflow.providers.microsoft.azure`` python package.
|
56
56
|
|
57
57
|
You can find package information and changelog for the provider
|
58
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/8.
|
58
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/8.5.0/>`_.
|
59
59
|
|
60
60
|
Installation
|
61
61
|
------------
|
@@ -118,4 +118,4 @@ Dependent package
|
|
118
118
|
==================================================================================================== ==========
|
119
119
|
|
120
120
|
The changelog for the provider package can be found in the
|
121
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/8.
|
121
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/8.5.0/changelog.html>`_.
|
@@ -16,7 +16,7 @@
|
|
16
16
|
# under the License.
|
17
17
|
from __future__ import annotations
|
18
18
|
|
19
|
-
from typing import TYPE_CHECKING
|
19
|
+
from typing import TYPE_CHECKING, Any
|
20
20
|
|
21
21
|
from airflow.hooks.base import BaseHook
|
22
22
|
from airflow.providers.microsoft.azure.utils import get_field
|
@@ -27,7 +27,7 @@ if TYPE_CHECKING:
|
|
27
27
|
schemes = ["abfs", "abfss", "adl"]
|
28
28
|
|
29
29
|
|
30
|
-
def get_fs(conn_id: str | None) -> AbstractFileSystem:
|
30
|
+
def get_fs(conn_id: str | None, storage_options: dict[str, Any] | None = None) -> AbstractFileSystem:
|
31
31
|
from adlfs import AzureBlobFileSystem
|
32
32
|
|
33
33
|
if conn_id is None:
|
@@ -36,24 +36,13 @@ def get_fs(conn_id: str | None) -> AbstractFileSystem:
|
|
36
36
|
conn = BaseHook.get_connection(conn_id)
|
37
37
|
extras = conn.extra_dejson
|
38
38
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
tenant = get_field(conn_id=conn_id, conn_type="azure_data_lake", extras=extras, field_name="tenant")
|
50
|
-
|
51
|
-
return AzureBlobFileSystem(
|
52
|
-
connection_string=connection_string,
|
53
|
-
account_name=account_name,
|
54
|
-
account_key=account_key,
|
55
|
-
sas_token=sas_token,
|
56
|
-
tenant_id=tenant,
|
57
|
-
client_id=conn.login,
|
58
|
-
client_secret=conn.password,
|
59
|
-
)
|
39
|
+
options = {}
|
40
|
+
fields = ["connection_string", "account_name", "account_key", "sas_token", "tenant"]
|
41
|
+
for field in fields:
|
42
|
+
options[field] = get_field(
|
43
|
+
conn_id=conn_id, conn_type="azure_data_lake", extras=extras, field_name=field
|
44
|
+
)
|
45
|
+
|
46
|
+
options.update(storage_options or {})
|
47
|
+
|
48
|
+
return AzureBlobFileSystem(**options)
|
@@ -28,8 +28,9 @@ def get_provider_info():
|
|
28
28
|
"name": "Microsoft Azure",
|
29
29
|
"description": "`Microsoft Azure <https://azure.microsoft.com/>`__\n",
|
30
30
|
"suspended": False,
|
31
|
-
"source-date-epoch":
|
31
|
+
"source-date-epoch": 1703288146,
|
32
32
|
"versions": [
|
33
|
+
"8.5.0",
|
33
34
|
"8.4.0",
|
34
35
|
"8.3.0",
|
35
36
|
"8.2.0",
|
@@ -45,9 +45,9 @@ class BaseAzureServiceBusHook(BaseHook):
|
|
45
45
|
conn_type = "azure_service_bus"
|
46
46
|
hook_name = "Azure Service Bus"
|
47
47
|
|
48
|
-
@
|
48
|
+
@classmethod
|
49
49
|
@add_managed_identity_connection_widgets
|
50
|
-
def get_connection_form_widgets() -> dict[str, Any]:
|
50
|
+
def get_connection_form_widgets(cls) -> dict[str, Any]:
|
51
51
|
"""Returns connection widgets to add to connection form."""
|
52
52
|
from flask_appbuilder.fieldwidgets import BS3TextFieldWidget
|
53
53
|
from flask_babel import lazy_gettext
|
@@ -60,8 +60,8 @@ class BaseAzureServiceBusHook(BaseHook):
|
|
60
60
|
"credential": PasswordField(lazy_gettext("Credential"), widget=BS3TextFieldWidget()),
|
61
61
|
}
|
62
62
|
|
63
|
-
@
|
64
|
-
def get_ui_field_behaviour() -> dict[str, Any]:
|
63
|
+
@classmethod
|
64
|
+
def get_ui_field_behaviour(cls) -> dict[str, Any]:
|
65
65
|
"""Returns custom field behaviour."""
|
66
66
|
return {
|
67
67
|
"hidden_fields": ["port", "host", "extra", "login", "password"],
|
@@ -47,9 +47,9 @@ class AzureBaseHook(BaseHook):
|
|
47
47
|
conn_type = "azure"
|
48
48
|
hook_name = "Azure"
|
49
49
|
|
50
|
-
@
|
50
|
+
@classmethod
|
51
51
|
@add_managed_identity_connection_widgets
|
52
|
-
def get_connection_form_widgets() -> dict[str, Any]:
|
52
|
+
def get_connection_form_widgets(cls) -> dict[str, Any]:
|
53
53
|
"""Returns connection widgets to add to connection form."""
|
54
54
|
from flask_appbuilder.fieldwidgets import BS3TextFieldWidget
|
55
55
|
from flask_babel import lazy_gettext
|
@@ -60,8 +60,8 @@ class AzureBaseHook(BaseHook):
|
|
60
60
|
"subscriptionId": StringField(lazy_gettext("Azure Subscription ID"), widget=BS3TextFieldWidget()),
|
61
61
|
}
|
62
62
|
|
63
|
-
@
|
64
|
-
def get_ui_field_behaviour() -> dict[str, Any]:
|
63
|
+
@classmethod
|
64
|
+
def get_ui_field_behaviour(cls) -> dict[str, Any]:
|
65
65
|
"""Returns custom field behaviour."""
|
66
66
|
import json
|
67
67
|
|
@@ -46,9 +46,9 @@ class AzureContainerRegistryHook(BaseHook):
|
|
46
46
|
conn_type = "azure_container_registry"
|
47
47
|
hook_name = "Azure Container Registry"
|
48
48
|
|
49
|
-
@
|
49
|
+
@classmethod
|
50
50
|
@add_managed_identity_connection_widgets
|
51
|
-
def get_connection_form_widgets() -> dict[str, Any]:
|
51
|
+
def get_connection_form_widgets(cls) -> dict[str, Any]:
|
52
52
|
"""Returns connection widgets to add to connection form."""
|
53
53
|
from flask_appbuilder.fieldwidgets import BS3TextFieldWidget
|
54
54
|
from flask_babel import lazy_gettext
|
@@ -43,9 +43,9 @@ class AzureContainerVolumeHook(BaseHook):
|
|
43
43
|
conn_type = "azure_container_volume"
|
44
44
|
hook_name = "Azure Container Volume"
|
45
45
|
|
46
|
-
@
|
46
|
+
@classmethod
|
47
47
|
@add_managed_identity_connection_widgets
|
48
|
-
def get_connection_form_widgets() -> dict[str, Any]:
|
48
|
+
def get_connection_form_widgets(cls) -> dict[str, Any]:
|
49
49
|
"""Returns connection widgets to add to connection form."""
|
50
50
|
from flask_appbuilder.fieldwidgets import BS3PasswordFieldWidget, BS3TextFieldWidget
|
51
51
|
from flask_babel import lazy_gettext
|
@@ -65,8 +65,8 @@ class AzureContainerVolumeHook(BaseHook):
|
|
65
65
|
),
|
66
66
|
}
|
67
67
|
|
68
|
-
@
|
69
|
-
def get_ui_field_behaviour() -> dict[str, Any]:
|
68
|
+
@classmethod
|
69
|
+
def get_ui_field_behaviour(cls) -> dict[str, Any]:
|
70
70
|
"""Returns custom field behaviour."""
|
71
71
|
return {
|
72
72
|
"hidden_fields": ["schema", "port", "host", "extra"],
|
@@ -59,9 +59,9 @@ class AzureCosmosDBHook(BaseHook):
|
|
59
59
|
conn_type = "azure_cosmos"
|
60
60
|
hook_name = "Azure CosmosDB"
|
61
61
|
|
62
|
-
@
|
62
|
+
@classmethod
|
63
63
|
@add_managed_identity_connection_widgets
|
64
|
-
def get_connection_form_widgets() -> dict[str, Any]:
|
64
|
+
def get_connection_form_widgets(cls) -> dict[str, Any]:
|
65
65
|
"""Returns connection widgets to add to connection form."""
|
66
66
|
from flask_appbuilder.fieldwidgets import BS3TextFieldWidget
|
67
67
|
from flask_babel import lazy_gettext
|
@@ -84,8 +84,8 @@ class AzureCosmosDBHook(BaseHook):
|
|
84
84
|
),
|
85
85
|
}
|
86
86
|
|
87
|
-
@
|
88
|
-
def get_ui_field_behaviour() -> dict[str, Any]:
|
87
|
+
@classmethod
|
88
|
+
def get_ui_field_behaviour(cls) -> dict[str, Any]:
|
89
89
|
"""Returns custom field behaviour."""
|
90
90
|
return {
|
91
91
|
"hidden_fields": ["schema", "port", "host", "extra"],
|
@@ -156,9 +156,9 @@ class AzureDataFactoryHook(BaseHook):
|
|
156
156
|
default_conn_name: str = "azure_data_factory_default"
|
157
157
|
hook_name: str = "Azure Data Factory"
|
158
158
|
|
159
|
-
@
|
159
|
+
@classmethod
|
160
160
|
@add_managed_identity_connection_widgets
|
161
|
-
def get_connection_form_widgets() -> dict[str, Any]:
|
161
|
+
def get_connection_form_widgets(cls) -> dict[str, Any]:
|
162
162
|
"""Returns connection widgets to add to connection form."""
|
163
163
|
from flask_appbuilder.fieldwidgets import BS3TextFieldWidget
|
164
164
|
from flask_babel import lazy_gettext
|
@@ -173,8 +173,8 @@ class AzureDataFactoryHook(BaseHook):
|
|
173
173
|
"factory_name": StringField(lazy_gettext("Factory Name"), widget=BS3TextFieldWidget()),
|
174
174
|
}
|
175
175
|
|
176
|
-
@
|
177
|
-
def get_ui_field_behaviour() -> dict[str, Any]:
|
176
|
+
@classmethod
|
177
|
+
def get_ui_field_behaviour(cls) -> dict[str, Any]:
|
178
178
|
"""Returns custom field behaviour."""
|
179
179
|
return {
|
180
180
|
"hidden_fields": ["schema", "port", "host", "extra"],
|
@@ -65,9 +65,9 @@ class AzureDataLakeHook(BaseHook):
|
|
65
65
|
conn_type = "azure_data_lake"
|
66
66
|
hook_name = "Azure Data Lake"
|
67
67
|
|
68
|
-
@
|
68
|
+
@classmethod
|
69
69
|
@add_managed_identity_connection_widgets
|
70
|
-
def get_connection_form_widgets() -> dict[str, Any]:
|
70
|
+
def get_connection_form_widgets(cls) -> dict[str, Any]:
|
71
71
|
"""Returns connection widgets to add to connection form."""
|
72
72
|
from flask_appbuilder.fieldwidgets import BS3TextFieldWidget
|
73
73
|
from flask_babel import lazy_gettext
|
@@ -80,8 +80,8 @@ class AzureDataLakeHook(BaseHook):
|
|
80
80
|
),
|
81
81
|
}
|
82
82
|
|
83
|
-
@
|
84
|
-
def get_ui_field_behaviour() -> dict[str, Any]:
|
83
|
+
@classmethod
|
84
|
+
def get_ui_field_behaviour(cls) -> dict[str, Any]:
|
85
85
|
"""Returns custom field behaviour."""
|
86
86
|
return {
|
87
87
|
"hidden_fields": ["schema", "port", "host", "extra"],
|
@@ -42,9 +42,9 @@ class AzureFileShareHook(BaseHook):
|
|
42
42
|
conn_type = "azure_fileshare"
|
43
43
|
hook_name = "Azure FileShare"
|
44
44
|
|
45
|
-
@
|
45
|
+
@classmethod
|
46
46
|
@add_managed_identity_connection_widgets
|
47
|
-
def get_connection_form_widgets() -> dict[str, Any]:
|
47
|
+
def get_connection_form_widgets(cls) -> dict[str, Any]:
|
48
48
|
"""Returns connection widgets to add to connection form."""
|
49
49
|
from flask_appbuilder.fieldwidgets import BS3PasswordFieldWidget, BS3TextFieldWidget
|
50
50
|
from flask_babel import lazy_gettext
|
@@ -57,8 +57,8 @@ class AzureFileShareHook(BaseHook):
|
|
57
57
|
),
|
58
58
|
}
|
59
59
|
|
60
|
-
@
|
61
|
-
def get_ui_field_behaviour() -> dict[str, Any]:
|
60
|
+
@classmethod
|
61
|
+
def get_ui_field_behaviour(cls) -> dict[str, Any]:
|
62
62
|
"""Returns custom field behaviour."""
|
63
63
|
return {
|
64
64
|
"hidden_fields": ["schema", "port", "host", "extra"],
|
@@ -135,6 +135,7 @@ class AzureFileShareHook(BaseHook):
|
|
135
135
|
|
136
136
|
@property
|
137
137
|
def share_directory_client(self):
|
138
|
+
self.get_conn()
|
138
139
|
if self._connection_string:
|
139
140
|
return ShareDirectoryClient.from_connection_string(
|
140
141
|
conn_str=self._connection_string,
|
@@ -160,6 +161,7 @@ class AzureFileShareHook(BaseHook):
|
|
160
161
|
|
161
162
|
@property
|
162
163
|
def share_file_client(self):
|
164
|
+
self.get_conn()
|
163
165
|
if self._connection_string:
|
164
166
|
return ShareFileClient.from_connection_string(
|
165
167
|
conn_str=self._connection_string,
|
@@ -69,9 +69,9 @@ class AzureSynapseHook(BaseHook):
|
|
69
69
|
default_conn_name: str = "azure_synapse_default"
|
70
70
|
hook_name: str = "Azure Synapse"
|
71
71
|
|
72
|
-
@
|
72
|
+
@classmethod
|
73
73
|
@add_managed_identity_connection_widgets
|
74
|
-
def get_connection_form_widgets() -> dict[str, Any]:
|
74
|
+
def get_connection_form_widgets(cls) -> dict[str, Any]:
|
75
75
|
"""Returns connection widgets to add to connection form."""
|
76
76
|
from flask_appbuilder.fieldwidgets import BS3TextFieldWidget
|
77
77
|
from flask_babel import lazy_gettext
|
@@ -82,8 +82,8 @@ class AzureSynapseHook(BaseHook):
|
|
82
82
|
"subscriptionId": StringField(lazy_gettext("Subscription ID"), widget=BS3TextFieldWidget()),
|
83
83
|
}
|
84
84
|
|
85
|
-
@
|
86
|
-
def get_ui_field_behaviour() -> dict[str, Any]:
|
85
|
+
@classmethod
|
86
|
+
def get_ui_field_behaviour(cls) -> dict[str, Any]:
|
87
87
|
"""Returns custom field behaviour."""
|
88
88
|
return {
|
89
89
|
"hidden_fields": ["schema", "port", "extra"],
|
@@ -253,8 +253,8 @@ class AzureSynapsePipelineHook(BaseHook):
|
|
253
253
|
default_conn_name: str = "azure_synapse_connection"
|
254
254
|
hook_name: str = "Azure Synapse Pipeline"
|
255
255
|
|
256
|
-
@
|
257
|
-
def get_connection_form_widgets() -> dict[str, Any]:
|
256
|
+
@classmethod
|
257
|
+
def get_connection_form_widgets(cls) -> dict[str, Any]:
|
258
258
|
"""Returns connection widgets to add to connection form."""
|
259
259
|
from flask_appbuilder.fieldwidgets import BS3TextFieldWidget
|
260
260
|
from flask_babel import lazy_gettext
|
@@ -264,8 +264,8 @@ class AzureSynapsePipelineHook(BaseHook):
|
|
264
264
|
"tenantId": StringField(lazy_gettext("Tenant ID"), widget=BS3TextFieldWidget()),
|
265
265
|
}
|
266
266
|
|
267
|
-
@
|
268
|
-
def get_ui_field_behaviour() -> dict[str, Any]:
|
267
|
+
@classmethod
|
268
|
+
def get_ui_field_behaviour(cls) -> dict[str, Any]:
|
269
269
|
"""Returns custom field behaviour."""
|
270
270
|
return {
|
271
271
|
"hidden_fields": ["schema", "port", "extra"],
|
@@ -81,9 +81,9 @@ class WasbHook(BaseHook):
|
|
81
81
|
conn_type = "wasb"
|
82
82
|
hook_name = "Azure Blob Storage"
|
83
83
|
|
84
|
-
@
|
84
|
+
@classmethod
|
85
85
|
@add_managed_identity_connection_widgets
|
86
|
-
def get_connection_form_widgets() -> dict[str, Any]:
|
86
|
+
def get_connection_form_widgets(cls) -> dict[str, Any]:
|
87
87
|
"""Returns connection widgets to add to connection form."""
|
88
88
|
from flask_appbuilder.fieldwidgets import BS3PasswordFieldWidget, BS3TextFieldWidget
|
89
89
|
from flask_babel import lazy_gettext
|
@@ -102,8 +102,8 @@ class WasbHook(BaseHook):
|
|
102
102
|
"sas_token": PasswordField(lazy_gettext("SAS Token (optional)"), widget=BS3PasswordFieldWidget()),
|
103
103
|
}
|
104
104
|
|
105
|
-
@
|
106
|
-
def get_ui_field_behaviour() -> dict[str, Any]:
|
105
|
+
@classmethod
|
106
|
+
def get_ui_field_behaviour(cls) -> dict[str, Any]:
|
107
107
|
"""Returns custom field behaviour."""
|
108
108
|
return {
|
109
109
|
"hidden_fields": ["schema", "port"],
|
@@ -78,9 +78,9 @@ class ADLSListOperator(BaseOperator):
|
|
78
78
|
folder in the specified ADLS account ::
|
79
79
|
|
80
80
|
adls_files = ADLSListOperator(
|
81
|
-
task_id=
|
82
|
-
path=
|
83
|
-
azure_data_lake_conn_id=
|
81
|
+
task_id="adls_files",
|
82
|
+
path="folder/output/*.parquet",
|
83
|
+
azure_data_lake_conn_id="azure_data_lake_default",
|
84
84
|
)
|
85
85
|
"""
|
86
86
|
|
@@ -93,29 +93,29 @@ class AzureContainerInstancesOperator(BaseOperator):
|
|
93
93
|
|
94
94
|
**Example**::
|
95
95
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
96
|
+
AzureContainerInstancesOperator(
|
97
|
+
ci_conn_id="azure_service_principal",
|
98
|
+
registry_conn_id="azure_registry_user",
|
99
|
+
resource_group="my-resource-group",
|
100
|
+
name="my-container-name-{{ ds }}",
|
101
|
+
image="myprivateregistry.azurecr.io/my_container:latest",
|
102
|
+
region="westeurope",
|
103
|
+
environment_variables={
|
104
|
+
"MODEL_PATH": "my_value",
|
105
|
+
"POSTGRES_LOGIN": "{{ macros.connection('postgres_default').login }}",
|
106
|
+
"POSTGRES_PASSWORD": "{{ macros.connection('postgres_default').password }}",
|
107
|
+
"JOB_GUID": "{{ ti.xcom_pull(task_ids='task1', key='guid') }}",
|
108
|
+
},
|
109
|
+
secured_variables=["POSTGRES_PASSWORD"],
|
110
|
+
volumes=[
|
111
|
+
("azure_container_instance_conn_id", "my_storage_container", "my_fileshare", "/input-data", True),
|
112
|
+
],
|
113
|
+
memory_in_gb=14.0,
|
114
|
+
cpu=4.0,
|
115
|
+
gpu=GpuResource(count=1, sku="K80"),
|
116
|
+
command=["/bin/echo", "world"],
|
117
|
+
task_id="start_container",
|
118
|
+
)
|
119
119
|
"""
|
120
120
|
|
121
121
|
template_fields: Sequence[str] = ("name", "image", "command", "environment_variables", "volumes")
|
@@ -28,7 +28,7 @@ build-backend = "flit_core.buildapi"
|
|
28
28
|
|
29
29
|
[project]
|
30
30
|
name = "apache-airflow-providers-microsoft-azure"
|
31
|
-
version = "8.
|
31
|
+
version = "8.5.0"
|
32
32
|
description = "Provider package apache-airflow-providers-microsoft-azure for Apache Airflow"
|
33
33
|
readme = "README.rst"
|
34
34
|
authors = [
|
@@ -80,8 +80,8 @@ dependencies = [
|
|
80
80
|
]
|
81
81
|
|
82
82
|
[project.urls]
|
83
|
-
"Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/8.
|
84
|
-
"Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/8.
|
83
|
+
"Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/8.5.0"
|
84
|
+
"Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/8.5.0/changelog.html"
|
85
85
|
"Bug Tracker" = "https://github.com/apache/airflow/issues"
|
86
86
|
"Source Code" = "https://github.com/apache/airflow"
|
87
87
|
"Slack Chat" = "https://s.apache.org/airflow-slack"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|