apache-airflow-providers-microsoft-azure 12.2.0__tar.gz → 12.2.1__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.
Files changed (58) hide show
  1. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/PKG-INFO +24 -25
  2. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/README.rst +20 -21
  3. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/pyproject.toml +25 -10
  4. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/__init__.py +1 -1
  5. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/fs/adls.py +2 -1
  6. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/get_provider_info.py +2 -1
  7. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/hooks/adx.py +3 -2
  8. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/hooks/asb.py +9 -7
  9. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/hooks/base_azure.py +3 -2
  10. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/hooks/batch.py +2 -1
  11. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/hooks/container_instance.py +4 -3
  12. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/hooks/container_registry.py +3 -2
  13. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/hooks/container_volume.py +3 -2
  14. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/hooks/cosmos.py +5 -4
  15. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/hooks/data_lake.py +9 -8
  16. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/hooks/fileshare.py +2 -1
  17. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/hooks/synapse.py +5 -4
  18. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/log/wasb_task_handler.py +9 -3
  19. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/operators/adx.py +2 -1
  20. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/operators/asb.py +2 -1
  21. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/operators/batch.py +2 -1
  22. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/operators/data_factory.py +8 -1
  23. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/operators/msgraph.py +9 -1
  24. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/operators/powerbi.py +8 -1
  25. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/operators/synapse.py +10 -2
  26. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/secrets/key_vault.py +4 -3
  27. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/triggers/data_factory.py +2 -1
  28. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/utils.py +1 -2
  29. apache_airflow_providers_microsoft_azure-12.2.1/src/airflow/providers/microsoft/azure/version_compat.py +36 -0
  30. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/LICENSE +0 -0
  31. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/fs/__init__.py +0 -0
  32. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/hooks/__init__.py +0 -0
  33. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/hooks/data_factory.py +7 -7
  34. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/hooks/msgraph.py +2 -2
  35. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/hooks/powerbi.py +0 -0
  36. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/hooks/wasb.py +9 -9
  37. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/log/__init__.py +0 -0
  38. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/operators/__init__.py +0 -0
  39. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/operators/adls.py +0 -0
  40. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/operators/container_instances.py +7 -7
  41. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/operators/cosmos.py +0 -0
  42. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/operators/wasb_delete_blob.py +0 -0
  43. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/secrets/__init__.py +0 -0
  44. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/sensors/__init__.py +0 -0
  45. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/sensors/cosmos.py +0 -0
  46. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/sensors/data_factory.py +0 -0
  47. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/sensors/msgraph.py +0 -0
  48. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/sensors/wasb.py +0 -0
  49. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/transfers/__init__.py +0 -0
  50. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/transfers/local_to_adls.py +0 -0
  51. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/transfers/local_to_wasb.py +0 -0
  52. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/transfers/oracle_to_azure_data_lake.py +0 -0
  53. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/transfers/s3_to_wasb.py +0 -0
  54. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/transfers/sftp_to_wasb.py +0 -0
  55. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/triggers/__init__.py +0 -0
  56. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/triggers/msgraph.py +0 -0
  57. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/triggers/powerbi.py +0 -0
  58. {apache_airflow_providers_microsoft_azure-12.2.0 → apache_airflow_providers_microsoft_azure-12.2.1}/src/airflow/providers/microsoft/azure/triggers/wasb.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: apache-airflow-providers-microsoft-azure
3
- Version: 12.2.0
3
+ Version: 12.2.1
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>
@@ -52,8 +52,8 @@ Requires-Dist: apache-airflow-providers-common-compat ; extra == "common-compat"
52
52
  Requires-Dist: apache-airflow-providers-oracle ; extra == "oracle"
53
53
  Requires-Dist: apache-airflow-providers-sftp ; extra == "sftp"
54
54
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
55
- Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/12.2.0/changelog.html
56
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/12.2.0
55
+ Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/12.2.1/changelog.html
56
+ Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/12.2.1
57
57
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
58
58
  Project-URL: Source Code, https://github.com/apache/airflow
59
59
  Project-URL: Twitter, https://x.com/ApacheAirflow
@@ -64,32 +64,31 @@ Provides-Extra: oracle
64
64
  Provides-Extra: sftp
65
65
 
66
66
 
67
- .. Licensed to the Apache Software Foundation (ASF) under one
68
- or more contributor license agreements. See the NOTICE file
69
- distributed with this work for additional information
70
- regarding copyright ownership. The ASF licenses this file
71
- to you under the Apache License, Version 2.0 (the
72
- "License"); you may not use this file except in compliance
73
- with the License. You may obtain a copy of the License at
67
+ .. Licensed to the Apache Software Foundation (ASF) under one
68
+ or more contributor license agreements. See the NOTICE file
69
+ distributed with this work for additional information
70
+ regarding copyright ownership. The ASF licenses this file
71
+ to you under the Apache License, Version 2.0 (the
72
+ "License"); you may not use this file except in compliance
73
+ with the License. You may obtain a copy of the License at
74
74
 
75
- .. http://www.apache.org/licenses/LICENSE-2.0
75
+ .. http://www.apache.org/licenses/LICENSE-2.0
76
76
 
77
- .. Unless required by applicable law or agreed to in writing,
78
- software distributed under the License is distributed on an
79
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
80
- KIND, either express or implied. See the License for the
81
- specific language governing permissions and limitations
82
- under the License.
77
+ .. Unless required by applicable law or agreed to in writing,
78
+ software distributed under the License is distributed on an
79
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
80
+ KIND, either express or implied. See the License for the
81
+ specific language governing permissions and limitations
82
+ under the License.
83
83
 
84
- .. NOTE! THIS FILE IS AUTOMATICALLY GENERATED AND WILL BE OVERWRITTEN!
85
-
86
- .. IF YOU WANT TO MODIFY TEMPLATE FOR THIS FILE, YOU SHOULD MODIFY THE TEMPLATE
87
- `PROVIDER_README_TEMPLATE.rst.jinja2` IN the `dev/breeze/src/airflow_breeze/templates` DIRECTORY
84
+ .. NOTE! THIS FILE IS AUTOMATICALLY GENERATED AND WILL BE OVERWRITTEN!
88
85
 
86
+ .. IF YOU WANT TO MODIFY TEMPLATE FOR THIS FILE, YOU SHOULD MODIFY THE TEMPLATE
87
+ ``PROVIDER_README_TEMPLATE.rst.jinja2`` IN the ``dev/breeze/src/airflow_breeze/templates`` DIRECTORY
89
88
 
90
89
  Package ``apache-airflow-providers-microsoft-azure``
91
90
 
92
- Release: ``12.2.0``
91
+ Release: ``12.2.1``
93
92
 
94
93
 
95
94
  `Microsoft Azure <https://azure.microsoft.com/>`__
@@ -102,7 +101,7 @@ This is a provider package for ``microsoft.azure`` provider. All classes for thi
102
101
  are in ``airflow.providers.microsoft.azure`` python package.
103
102
 
104
103
  You can find package information and changelog for the provider
105
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/12.2.0/>`_.
104
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/12.2.1/>`_.
106
105
 
107
106
  Installation
108
107
  ------------
@@ -171,5 +170,5 @@ Dependent package
171
170
  ================================================================================================================== =================
172
171
 
173
172
  The changelog for the provider package can be found in the
174
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/12.2.0/changelog.html>`_.
173
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/12.2.1/changelog.html>`_.
175
174
 
@@ -1,30 +1,29 @@
1
1
 
2
- .. Licensed to the Apache Software Foundation (ASF) under one
3
- or more contributor license agreements. See the NOTICE file
4
- distributed with this work for additional information
5
- regarding copyright ownership. The ASF licenses this file
6
- to you under the Apache License, Version 2.0 (the
7
- "License"); you may not use this file except in compliance
8
- with the License. You may obtain a copy of the License at
2
+ .. Licensed to the Apache Software Foundation (ASF) under one
3
+ or more contributor license agreements. See the NOTICE file
4
+ distributed with this work for additional information
5
+ regarding copyright ownership. The ASF licenses this file
6
+ to you under the Apache License, Version 2.0 (the
7
+ "License"); you may not use this file except in compliance
8
+ with the License. You may obtain a copy of the License at
9
9
 
10
- .. http://www.apache.org/licenses/LICENSE-2.0
10
+ .. http://www.apache.org/licenses/LICENSE-2.0
11
11
 
12
- .. Unless required by applicable law or agreed to in writing,
13
- software distributed under the License is distributed on an
14
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
- KIND, either express or implied. See the License for the
16
- specific language governing permissions and limitations
17
- under the License.
12
+ .. Unless required by applicable law or agreed to in writing,
13
+ software distributed under the License is distributed on an
14
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ KIND, either express or implied. See the License for the
16
+ specific language governing permissions and limitations
17
+ under the License.
18
18
 
19
- .. NOTE! THIS FILE IS AUTOMATICALLY GENERATED AND WILL BE OVERWRITTEN!
20
-
21
- .. IF YOU WANT TO MODIFY TEMPLATE FOR THIS FILE, YOU SHOULD MODIFY THE TEMPLATE
22
- `PROVIDER_README_TEMPLATE.rst.jinja2` IN the `dev/breeze/src/airflow_breeze/templates` DIRECTORY
19
+ .. NOTE! THIS FILE IS AUTOMATICALLY GENERATED AND WILL BE OVERWRITTEN!
23
20
 
21
+ .. IF YOU WANT TO MODIFY TEMPLATE FOR THIS FILE, YOU SHOULD MODIFY THE TEMPLATE
22
+ ``PROVIDER_README_TEMPLATE.rst.jinja2`` IN the ``dev/breeze/src/airflow_breeze/templates`` DIRECTORY
24
23
 
25
24
  Package ``apache-airflow-providers-microsoft-azure``
26
25
 
27
- Release: ``12.2.0``
26
+ Release: ``12.2.1``
28
27
 
29
28
 
30
29
  `Microsoft Azure <https://azure.microsoft.com/>`__
@@ -37,7 +36,7 @@ This is a provider package for ``microsoft.azure`` provider. All classes for thi
37
36
  are in ``airflow.providers.microsoft.azure`` python package.
38
37
 
39
38
  You can find package information and changelog for the provider
40
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/12.2.0/>`_.
39
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/12.2.1/>`_.
41
40
 
42
41
  Installation
43
42
  ------------
@@ -106,4 +105,4 @@ Dependent package
106
105
  ================================================================================================================== =================
107
106
 
108
107
  The changelog for the provider package can be found in the
109
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/12.2.0/changelog.html>`_.
108
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/12.2.1/changelog.html>`_.
@@ -20,12 +20,12 @@
20
20
  # IF YOU WANT TO MODIFY THIS FILE EXCEPT DEPENDENCIES, YOU SHOULD MODIFY THE TEMPLATE
21
21
  # `pyproject_TEMPLATE.toml.jinja2` IN the `dev/breeze/src/airflow_breeze/templates` DIRECTORY
22
22
  [build-system]
23
- requires = ["flit_core==3.10.1"]
23
+ requires = ["flit_core==3.11.0"]
24
24
  build-backend = "flit_core.buildapi"
25
25
 
26
26
  [project]
27
27
  name = "apache-airflow-providers-microsoft-azure"
28
- version = "12.2.0"
28
+ version = "12.2.1"
29
29
  description = "Provider package apache-airflow-providers-microsoft-azure for Apache Airflow"
30
30
  readme = "README.rst"
31
31
  authors = [
@@ -52,8 +52,10 @@ classifiers = [
52
52
  ]
53
53
  requires-python = "~=3.9"
54
54
 
55
- # The dependencies should be modified in place in the generated file
55
+ # The dependencies should be modified in place in the generated file.
56
56
  # Any change in the dependencies is preserved when the file is regenerated
57
+ # Make sure to run ``breeze static-checks --type update-providers-dependencies --all-files``
58
+ # After you modify the dependencies, and rebuild your Breeze CI image with ``breeze ci-image build``
57
59
  dependencies = [
58
60
  "apache-airflow>=2.9.0",
59
61
  "adlfs>=2023.10.0",
@@ -107,16 +109,32 @@ dependencies = [
107
109
  "apache-airflow-providers-sftp"
108
110
  ]
109
111
 
110
- # The dependency groups should be modified in place in the generated file
111
- # Any change in the dependencies is preserved when the file is regenerated
112
112
  [dependency-groups]
113
113
  dev = [
114
+ "apache-airflow",
115
+ "apache-airflow-task-sdk",
116
+ "apache-airflow-devel-common",
117
+ "apache-airflow-providers-amazon",
118
+ "apache-airflow-providers-common-compat",
119
+ "apache-airflow-providers-oracle",
120
+ "apache-airflow-providers-sftp",
121
+ # Additional devel dependencies (do not remove this line and add extra development dependencies)
114
122
  "pywinrm>=0.4",
115
123
  ]
116
124
 
125
+ [tool.uv.sources]
126
+ # These names must match the names as defined in the pyproject.toml of the workspace items,
127
+ # *not* the workspace folder paths
128
+ apache-airflow = {workspace = true}
129
+ apache-airflow-devel-common = {workspace = true}
130
+ apache-airflow-task-sdk = {workspace = true}
131
+ apache-airflow-providers-common-sql = {workspace = true}
132
+ apache-airflow-providers-fab = {workspace = true}
133
+ apache-airflow-providers-standard = {workspace = true}
134
+
117
135
  [project.urls]
118
- "Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/12.2.0"
119
- "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/12.2.0/changelog.html"
136
+ "Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/12.2.1"
137
+ "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-microsoft-azure/12.2.1/changelog.html"
120
138
  "Bug Tracker" = "https://github.com/apache/airflow/issues"
121
139
  "Source Code" = "https://github.com/apache/airflow"
122
140
  "Slack Chat" = "https://s.apache.org/airflow-slack"
@@ -128,6 +146,3 @@ provider_info = "airflow.providers.microsoft.azure.get_provider_info:get_provide
128
146
 
129
147
  [tool.flit.module]
130
148
  name = "airflow.providers.microsoft.azure"
131
-
132
- [tool.pytest.ini_options]
133
- ignore = "tests/system/"
@@ -29,7 +29,7 @@ from airflow import __version__ as airflow_version
29
29
 
30
30
  __all__ = ["__version__"]
31
31
 
32
- __version__ = "12.2.0"
32
+ __version__ = "12.2.1"
33
33
 
34
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
35
35
  "2.9.0"
@@ -18,9 +18,10 @@ from __future__ import annotations
18
18
 
19
19
  from typing import TYPE_CHECKING, Any
20
20
 
21
+ from azure.identity import ClientSecretCredential
22
+
21
23
  from airflow.hooks.base import BaseHook
22
24
  from airflow.providers.microsoft.azure.utils import get_field, parse_blob_account_url
23
- from azure.identity import ClientSecretCredential
24
25
 
25
26
  if TYPE_CHECKING:
26
27
  from fsspec import AbstractFileSystem
@@ -27,8 +27,9 @@ def get_provider_info():
27
27
  "name": "Microsoft Azure",
28
28
  "description": "`Microsoft Azure <https://azure.microsoft.com/>`__\n",
29
29
  "state": "ready",
30
- "source-date-epoch": 1739963698,
30
+ "source-date-epoch": 1741508992,
31
31
  "versions": [
32
+ "12.2.1",
32
33
  "12.2.0",
33
34
  "12.0.0",
34
35
  "11.1.0",
@@ -30,14 +30,15 @@ import warnings
30
30
  from functools import cached_property
31
31
  from typing import TYPE_CHECKING, Any
32
32
 
33
+ from azure.kusto.data import ClientRequestProperties, KustoClient, KustoConnectionStringBuilder
34
+ from azure.kusto.data.exceptions import KustoServiceError
35
+
33
36
  from airflow.exceptions import AirflowException
34
37
  from airflow.hooks.base import BaseHook
35
38
  from airflow.providers.microsoft.azure.utils import (
36
39
  add_managed_identity_connection_widgets,
37
40
  get_sync_default_azure_credential,
38
41
  )
39
- from azure.kusto.data import ClientRequestProperties, KustoClient, KustoConnectionStringBuilder
40
- from azure.kusto.data.exceptions import KustoServiceError
41
42
 
42
43
  if TYPE_CHECKING:
43
44
  from azure.kusto.data.response import KustoResponseDataSet
@@ -19,12 +19,6 @@ from __future__ import annotations
19
19
  from typing import TYPE_CHECKING, Any, Callable
20
20
  from uuid import uuid4
21
21
 
22
- from airflow.hooks.base import BaseHook
23
- from airflow.providers.microsoft.azure.utils import (
24
- add_managed_identity_connection_widgets,
25
- get_field,
26
- get_sync_default_azure_credential,
27
- )
28
22
  from azure.core.exceptions import ResourceNotFoundError
29
23
  from azure.servicebus import (
30
24
  ServiceBusClient,
@@ -42,12 +36,20 @@ from azure.servicebus.management import (
42
36
  SubscriptionProperties,
43
37
  )
44
38
 
39
+ from airflow.hooks.base import BaseHook
40
+ from airflow.providers.microsoft.azure.utils import (
41
+ add_managed_identity_connection_widgets,
42
+ get_field,
43
+ get_sync_default_azure_credential,
44
+ )
45
+
45
46
  if TYPE_CHECKING:
46
47
  import datetime
47
48
 
48
- from airflow.utils.context import Context
49
49
  from azure.identity import DefaultAzureCredential
50
50
 
51
+ from airflow.utils.context import Context
52
+
51
53
  MessageCallback = Callable[[ServiceBusMessage, Context], None]
52
54
 
53
55
 
@@ -18,14 +18,15 @@ from __future__ import annotations
18
18
 
19
19
  from typing import Any
20
20
 
21
+ from azure.common.client_factory import get_client_from_auth_file, get_client_from_json_dict
22
+ from azure.common.credentials import ServicePrincipalCredentials
23
+
21
24
  from airflow.exceptions import AirflowException
22
25
  from airflow.hooks.base import BaseHook
23
26
  from airflow.providers.microsoft.azure.utils import (
24
27
  AzureIdentityCredentialAdapter,
25
28
  add_managed_identity_connection_widgets,
26
29
  )
27
- from azure.common.client_factory import get_client_from_auth_file, get_client_from_json_dict
28
- from azure.common.credentials import ServicePrincipalCredentials
29
30
 
30
31
 
31
32
  class AzureBaseHook(BaseHook):
@@ -22,6 +22,8 @@ from datetime import timedelta
22
22
  from functools import cached_property
23
23
  from typing import TYPE_CHECKING, Any
24
24
 
25
+ from azure.batch import BatchServiceClient, batch_auth, models as batch_models
26
+
25
27
  from airflow.exceptions import AirflowException
26
28
  from airflow.hooks.base import BaseHook
27
29
  from airflow.providers.microsoft.azure.utils import (
@@ -30,7 +32,6 @@ from airflow.providers.microsoft.azure.utils import (
30
32
  get_field,
31
33
  )
32
34
  from airflow.utils import timezone
33
- from azure.batch import BatchServiceClient, batch_auth, models as batch_models
34
35
 
35
36
  if TYPE_CHECKING:
36
37
  from azure.batch.models import JobAddParameter, PoolAddParameter, TaskAddParameter
@@ -20,13 +20,14 @@ from __future__ import annotations
20
20
  from functools import cached_property
21
21
  from typing import TYPE_CHECKING, Any, cast
22
22
 
23
- from airflow.exceptions import AirflowException
24
- from airflow.providers.microsoft.azure.hooks.base_azure import AzureBaseHook
25
- from airflow.providers.microsoft.azure.utils import get_sync_default_azure_credential
26
23
  from azure.common.client_factory import get_client_from_auth_file, get_client_from_json_dict
27
24
  from azure.identity import ClientSecretCredential, DefaultAzureCredential
28
25
  from azure.mgmt.containerinstance import ContainerInstanceManagementClient
29
26
 
27
+ from airflow.exceptions import AirflowException
28
+ from airflow.providers.microsoft.azure.hooks.base_azure import AzureBaseHook
29
+ from airflow.providers.microsoft.azure.utils import get_sync_default_azure_credential
30
+
30
31
  if TYPE_CHECKING:
31
32
  from azure.mgmt.containerinstance.models import (
32
33
  ContainerGroup,
@@ -22,14 +22,15 @@ from __future__ import annotations
22
22
  from functools import cached_property
23
23
  from typing import Any
24
24
 
25
+ from azure.mgmt.containerinstance.models import ImageRegistryCredential
26
+ from azure.mgmt.containerregistry import ContainerRegistryManagementClient
27
+
25
28
  from airflow.hooks.base import BaseHook
26
29
  from airflow.providers.microsoft.azure.utils import (
27
30
  add_managed_identity_connection_widgets,
28
31
  get_field,
29
32
  get_sync_default_azure_credential,
30
33
  )
31
- from azure.mgmt.containerinstance.models import ImageRegistryCredential
32
- from azure.mgmt.containerregistry import ContainerRegistryManagementClient
33
34
 
34
35
 
35
36
  class AzureContainerRegistryHook(BaseHook):
@@ -18,14 +18,15 @@ from __future__ import annotations
18
18
 
19
19
  from typing import Any
20
20
 
21
+ from azure.mgmt.containerinstance.models import AzureFileVolume, Volume
22
+ from azure.mgmt.storage import StorageManagementClient
23
+
21
24
  from airflow.hooks.base import BaseHook
22
25
  from airflow.providers.microsoft.azure.utils import (
23
26
  add_managed_identity_connection_widgets,
24
27
  get_field,
25
28
  get_sync_default_azure_credential,
26
29
  )
27
- from azure.mgmt.containerinstance.models import AzureFileVolume, Volume
28
- from azure.mgmt.storage import StorageManagementClient
29
30
 
30
31
 
31
32
  class AzureContainerVolumeHook(BaseHook):
@@ -30,6 +30,11 @@ import uuid
30
30
  from typing import TYPE_CHECKING, Any, Union
31
31
  from urllib.parse import urlparse
32
32
 
33
+ from azure.cosmos import PartitionKey
34
+ from azure.cosmos.cosmos_client import CosmosClient
35
+ from azure.cosmos.exceptions import CosmosHttpResponseError
36
+ from azure.mgmt.cosmosdb import CosmosDBManagementClient
37
+
33
38
  from airflow.exceptions import AirflowBadRequest, AirflowException
34
39
  from airflow.hooks.base import BaseHook
35
40
  from airflow.providers.microsoft.azure.utils import (
@@ -37,10 +42,6 @@ from airflow.providers.microsoft.azure.utils import (
37
42
  get_field,
38
43
  get_sync_default_azure_credential,
39
44
  )
40
- from azure.cosmos import PartitionKey
41
- from azure.cosmos.cosmos_client import CosmosClient
42
- from azure.cosmos.exceptions import CosmosHttpResponseError
43
- from azure.mgmt.cosmosdb import CosmosDBManagementClient
44
45
 
45
46
  if TYPE_CHECKING:
46
47
  PartitionKeyType = Union[str, list[str]]
@@ -20,14 +20,6 @@ from __future__ import annotations
20
20
  from functools import cached_property
21
21
  from typing import Any, Union
22
22
 
23
- from airflow.exceptions import AirflowException
24
- from airflow.hooks.base import BaseHook
25
- from airflow.providers.microsoft.azure.utils import (
26
- AzureIdentityCredentialAdapter,
27
- add_managed_identity_connection_widgets,
28
- get_field,
29
- get_sync_default_azure_credential,
30
- )
31
23
  from azure.core.exceptions import ResourceExistsError, ResourceNotFoundError
32
24
  from azure.datalake.store import core, lib, multithread
33
25
  from azure.identity import ClientSecretCredential, DefaultAzureCredential
@@ -40,6 +32,15 @@ from azure.storage.filedatalake import (
40
32
  FileSystemProperties,
41
33
  )
42
34
 
35
+ from airflow.exceptions import AirflowException
36
+ from airflow.hooks.base import BaseHook
37
+ from airflow.providers.microsoft.azure.utils import (
38
+ AzureIdentityCredentialAdapter,
39
+ add_managed_identity_connection_widgets,
40
+ get_field,
41
+ get_sync_default_azure_credential,
42
+ )
43
+
43
44
  Credentials = Union[ClientSecretCredential, AzureIdentityCredentialAdapter, DefaultAzureCredential]
44
45
 
45
46
 
@@ -19,12 +19,13 @@ from __future__ import annotations
19
19
 
20
20
  from typing import IO, Any
21
21
 
22
+ from azure.storage.fileshare import FileProperties, ShareDirectoryClient, ShareFileClient, ShareServiceClient
23
+
22
24
  from airflow.hooks.base import BaseHook
23
25
  from airflow.providers.microsoft.azure.utils import (
24
26
  add_managed_identity_connection_widgets,
25
27
  get_sync_default_azure_credential,
26
28
  )
27
- from azure.storage.fileshare import FileProperties, ShareDirectoryClient, ShareFileClient, ShareServiceClient
28
29
 
29
30
 
30
31
  class AzureFileShareHook(BaseHook):
@@ -19,6 +19,11 @@ from __future__ import annotations
19
19
  import time
20
20
  from typing import TYPE_CHECKING, Any, Union
21
21
 
22
+ from azure.core.exceptions import ServiceRequestError
23
+ from azure.identity import ClientSecretCredential, DefaultAzureCredential
24
+ from azure.synapse.artifacts import ArtifactsClient
25
+ from azure.synapse.spark import SparkClient
26
+
22
27
  from airflow.exceptions import AirflowException, AirflowTaskTimeout
23
28
  from airflow.hooks.base import BaseHook
24
29
  from airflow.providers.microsoft.azure.utils import (
@@ -26,10 +31,6 @@ from airflow.providers.microsoft.azure.utils import (
26
31
  get_field,
27
32
  get_sync_default_azure_credential,
28
33
  )
29
- from azure.core.exceptions import ServiceRequestError
30
- from azure.identity import ClientSecretCredential, DefaultAzureCredential
31
- from azure.synapse.artifacts import ArtifactsClient
32
- from azure.synapse.spark import SparkClient
33
34
 
34
35
  if TYPE_CHECKING:
35
36
  from azure.synapse.artifacts.models import CreateRunResponse, PipelineRun
@@ -23,10 +23,12 @@ from functools import cached_property
23
23
  from pathlib import Path
24
24
  from typing import TYPE_CHECKING
25
25
 
26
+ from azure.core.exceptions import HttpResponseError
27
+
26
28
  from airflow.configuration import conf
29
+ from airflow.providers.microsoft.azure.version_compat import AIRFLOW_V_3_0_PLUS
27
30
  from airflow.utils.log.file_task_handler import FileTaskHandler
28
31
  from airflow.utils.log.logging_mixin import LoggingMixin
29
- from azure.core.exceptions import HttpResponseError
30
32
 
31
33
  if TYPE_CHECKING:
32
34
  import logging
@@ -136,9 +138,13 @@ class WasbTaskHandler(FileTaskHandler, LoggingMixin):
136
138
 
137
139
  if blob_names:
138
140
  uris = [f"https://{self.wasb_container}.blob.core.windows.net/{b}" for b in blob_names]
139
- messages.extend(["Found remote logs:", *[f" * {x}" for x in sorted(uris)]])
141
+ if AIRFLOW_V_3_0_PLUS:
142
+ messages = uris
143
+ else:
144
+ messages.extend(["Found remote logs:", *[f" * {x}" for x in sorted(uris)]])
140
145
  else:
141
- messages.append(f"No logs found in WASB; ti=%s {ti}")
146
+ if not AIRFLOW_V_3_0_PLUS:
147
+ messages.append(f"No logs found in WASB; ti={ti}")
142
148
 
143
149
  for name in sorted(blob_names):
144
150
  remote_log = ""
@@ -28,9 +28,10 @@ from airflow.models import BaseOperator
28
28
  from airflow.providers.microsoft.azure.hooks.adx import AzureDataExplorerHook
29
29
 
30
30
  if TYPE_CHECKING:
31
- from airflow.utils.context import Context
32
31
  from azure.kusto.data._models import KustoResultTable
33
32
 
33
+ from airflow.utils.context import Context
34
+
34
35
 
35
36
  class AzureDataExplorerQueryOperator(BaseOperator):
36
37
  """
@@ -25,10 +25,11 @@ from airflow.providers.microsoft.azure.hooks.asb import AdminClientHook, Message
25
25
  if TYPE_CHECKING:
26
26
  import datetime
27
27
 
28
- from airflow.utils.context import Context
29
28
  from azure.servicebus import ServiceBusMessage
30
29
  from azure.servicebus.management import AuthorizationRule, CorrelationRuleFilter, SqlRuleFilter
31
30
 
31
+ from airflow.utils.context import Context
32
+
32
33
  MessageCallback = Callable[[ServiceBusMessage, Context], None]
33
34
 
34
35
 
@@ -21,10 +21,11 @@ from collections.abc import Sequence
21
21
  from functools import cached_property
22
22
  from typing import TYPE_CHECKING, Any
23
23
 
24
+ from azure.batch import models as batch_models
25
+
24
26
  from airflow.exceptions import AirflowException
25
27
  from airflow.models import BaseOperator
26
28
  from airflow.providers.microsoft.azure.hooks.batch import AzureBatchHook
27
- from azure.batch import models as batch_models
28
29
 
29
30
  if TYPE_CHECKING:
30
31
  from airflow.utils.context import Context
@@ -25,7 +25,7 @@ from typing import TYPE_CHECKING, Any
25
25
  from airflow.configuration import conf
26
26
  from airflow.exceptions import AirflowException
27
27
  from airflow.hooks.base import BaseHook
28
- from airflow.models import BaseOperator, BaseOperatorLink, XCom
28
+ from airflow.models import BaseOperator, XCom
29
29
  from airflow.providers.microsoft.azure.hooks.data_factory import (
30
30
  AzureDataFactoryHook,
31
31
  AzureDataFactoryPipelineRunException,
@@ -39,6 +39,13 @@ if TYPE_CHECKING:
39
39
  from airflow.models.taskinstancekey import TaskInstanceKey
40
40
  from airflow.utils.context import Context
41
41
 
42
+ from airflow.providers.microsoft.azure.version_compat import AIRFLOW_V_3_0_PLUS
43
+
44
+ if AIRFLOW_V_3_0_PLUS:
45
+ from airflow.sdk import BaseOperatorLink
46
+ else:
47
+ from airflow.models.baseoperatorlink import BaseOperatorLink # type: ignore[no-redef]
48
+
42
49
 
43
50
  class AzureDataFactoryPipelineRunLink(LoggingMixin, BaseOperatorLink):
44
51
  """Construct a link to monitor a pipeline run in Azure Data Factory."""
@@ -319,7 +319,15 @@ class MSGraphAsyncOperator(BaseOperator):
319
319
 
320
320
  def trigger_next_link(self, response, method_name: str, context: Context) -> None:
321
321
  if isinstance(response, dict):
322
- url, query_parameters = self.pagination_function(self, response, **dict(context.items())) # type: ignore
322
+ try:
323
+ url, query_parameters = self.pagination_function(self, response, **dict(context.items())) # type: ignore
324
+ except TypeError:
325
+ warnings.warn(
326
+ "pagination_function signature has changed, context parameter should be a kwargs argument!",
327
+ AirflowProviderDeprecationWarning,
328
+ stacklevel=2,
329
+ )
330
+ url, query_parameters = self.pagination_function(self, response, context) # type: ignore
323
331
 
324
332
  self.log.debug("url: %s", url)
325
333
  self.log.debug("query_parameters: %s", query_parameters)
@@ -21,7 +21,7 @@ from collections.abc import Sequence
21
21
  from typing import TYPE_CHECKING, Any
22
22
 
23
23
  from airflow.exceptions import AirflowException
24
- from airflow.models import BaseOperator, BaseOperatorLink
24
+ from airflow.models import BaseOperator
25
25
  from airflow.providers.microsoft.azure.hooks.powerbi import PowerBIHook
26
26
  from airflow.providers.microsoft.azure.triggers.powerbi import PowerBITrigger
27
27
 
@@ -31,6 +31,13 @@ if TYPE_CHECKING:
31
31
  from airflow.models.taskinstancekey import TaskInstanceKey
32
32
  from airflow.utils.context import Context
33
33
 
34
+ from airflow.providers.microsoft.azure.version_compat import AIRFLOW_V_3_0_PLUS
35
+
36
+ if AIRFLOW_V_3_0_PLUS:
37
+ from airflow.sdk import BaseOperatorLink
38
+ else:
39
+ from airflow.models.baseoperatorlink import BaseOperatorLink # type: ignore[no-redef]
40
+
34
41
 
35
42
  class PowerBILink(BaseOperatorLink):
36
43
  """Construct a link to monitor a dataset in Power BI."""
@@ -23,7 +23,7 @@ from urllib.parse import urlencode
23
23
 
24
24
  from airflow.exceptions import AirflowException
25
25
  from airflow.hooks.base import BaseHook
26
- from airflow.models import BaseOperator, BaseOperatorLink, XCom
26
+ from airflow.models import BaseOperator, XCom
27
27
  from airflow.providers.microsoft.azure.hooks.synapse import (
28
28
  AzureSynapseHook,
29
29
  AzureSynapsePipelineHook,
@@ -33,9 +33,17 @@ from airflow.providers.microsoft.azure.hooks.synapse import (
33
33
  )
34
34
 
35
35
  if TYPE_CHECKING:
36
+ from azure.synapse.spark.models import SparkBatchJobOptions
37
+
36
38
  from airflow.models.taskinstancekey import TaskInstanceKey
37
39
  from airflow.utils.context import Context
38
- from azure.synapse.spark.models import SparkBatchJobOptions
40
+
41
+ from airflow.providers.microsoft.azure.version_compat import AIRFLOW_V_3_0_PLUS
42
+
43
+ if AIRFLOW_V_3_0_PLUS:
44
+ from airflow.sdk import BaseOperatorLink
45
+ else:
46
+ from airflow.models.baseoperatorlink import BaseOperatorLink # type: ignore[no-redef]
39
47
 
40
48
 
41
49
  class AzureSynapseRunSparkBatchOperator(BaseOperator):
@@ -28,13 +28,14 @@ import logging
28
28
  import os
29
29
  from functools import cached_property
30
30
 
31
- from airflow.providers.microsoft.azure.utils import get_sync_default_azure_credential
32
- from airflow.secrets import BaseSecretsBackend
33
- from airflow.utils.log.logging_mixin import LoggingMixin
34
31
  from azure.core.exceptions import ResourceNotFoundError
35
32
  from azure.identity import ClientSecretCredential, DefaultAzureCredential
36
33
  from azure.keyvault.secrets import SecretClient
37
34
 
35
+ from airflow.providers.microsoft.azure.utils import get_sync_default_azure_credential
36
+ from airflow.secrets import BaseSecretsBackend
37
+ from airflow.utils.log.logging_mixin import LoggingMixin
38
+
38
39
 
39
40
  class AzureKeyVaultBackend(BaseSecretsBackend, LoggingMixin):
40
41
  """
@@ -21,12 +21,13 @@ import time
21
21
  from collections.abc import AsyncIterator
22
22
  from typing import Any
23
23
 
24
+ from azure.core.exceptions import ServiceRequestError
25
+
24
26
  from airflow.providers.microsoft.azure.hooks.data_factory import (
25
27
  AzureDataFactoryAsyncHook,
26
28
  AzureDataFactoryPipelineRunStatus,
27
29
  )
28
30
  from airflow.triggers.base import BaseTrigger, TriggerEvent
29
- from azure.core.exceptions import ServiceRequestError
30
31
 
31
32
 
32
33
  class ADFPipelineRunStatusSensorTrigger(BaseTrigger):
@@ -21,13 +21,12 @@ import warnings
21
21
  from functools import partial, wraps
22
22
  from urllib.parse import urlparse, urlunparse
23
23
 
24
- from msrest.authentication import BasicTokenAuthentication
25
-
26
24
  from azure.core.pipeline import PipelineContext, PipelineRequest
27
25
  from azure.core.pipeline.policies import BearerTokenCredentialPolicy
28
26
  from azure.core.pipeline.transport import HttpRequest
29
27
  from azure.identity import DefaultAzureCredential
30
28
  from azure.identity.aio import DefaultAzureCredential as AsyncDefaultAzureCredential
29
+ from msrest.authentication import BasicTokenAuthentication
31
30
 
32
31
 
33
32
  def get_field(*, conn_id: str, conn_type: str, extras: dict, field_name: str):
@@ -0,0 +1,36 @@
1
+ # Licensed to the Apache Software Foundation (ASF) under one
2
+ # or more contributor license agreements. See the NOTICE file
3
+ # distributed with this work for additional information
4
+ # regarding copyright ownership. The ASF licenses this file
5
+ # to you under the Apache License, Version 2.0 (the
6
+ # "License"); you may not use this file except in compliance
7
+ # with the License. You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+ #
18
+ # NOTE! THIS FILE IS COPIED MANUALLY IN OTHER PROVIDERS DELIBERATELY TO AVOID ADDING UNNECESSARY
19
+ # DEPENDENCIES BETWEEN PROVIDERS. IF YOU WANT TO ADD CONDITIONAL CODE IN YOUR PROVIDER THAT DEPENDS
20
+ # ON AIRFLOW VERSION, PLEASE COPY THIS FILE TO THE ROOT PACKAGE OF YOUR PROVIDER AND IMPORT
21
+ # THOSE CONSTANTS FROM IT RATHER THAN IMPORTING THEM FROM ANOTHER PROVIDER OR TEST CODE
22
+ #
23
+ from __future__ import annotations
24
+
25
+
26
+ def get_base_airflow_version_tuple() -> tuple[int, int, int]:
27
+ from packaging.version import Version
28
+
29
+ from airflow import __version__
30
+
31
+ airflow_version = Version(__version__)
32
+ return airflow_version.major, airflow_version.minor, airflow_version.micro
33
+
34
+
35
+ AIRFLOW_V_2_10_PLUS = get_base_airflow_version_tuple() >= (2, 10, 0)
36
+ AIRFLOW_V_3_0_PLUS = get_base_airflow_version_tuple() >= (3, 0, 0)
@@ -39,6 +39,13 @@ from functools import wraps
39
39
  from typing import IO, TYPE_CHECKING, Any, Callable, TypeVar, Union, cast
40
40
 
41
41
  from asgiref.sync import sync_to_async
42
+ from azure.identity import ClientSecretCredential, DefaultAzureCredential
43
+ from azure.identity.aio import (
44
+ ClientSecretCredential as AsyncClientSecretCredential,
45
+ DefaultAzureCredential as AsyncDefaultAzureCredential,
46
+ )
47
+ from azure.mgmt.datafactory import DataFactoryManagementClient
48
+ from azure.mgmt.datafactory.aio import DataFactoryManagementClient as AsyncDataFactoryManagementClient
42
49
 
43
50
  from airflow.exceptions import AirflowException
44
51
  from airflow.hooks.base import BaseHook
@@ -47,13 +54,6 @@ from airflow.providers.microsoft.azure.utils import (
47
54
  get_async_default_azure_credential,
48
55
  get_sync_default_azure_credential,
49
56
  )
50
- from azure.identity import ClientSecretCredential, DefaultAzureCredential
51
- from azure.identity.aio import (
52
- ClientSecretCredential as AsyncClientSecretCredential,
53
- DefaultAzureCredential as AsyncDefaultAzureCredential,
54
- )
55
- from azure.mgmt.datafactory import DataFactoryManagementClient
56
- from azure.mgmt.datafactory.aio import DataFactoryManagementClient as AsyncDataFactoryManagementClient
57
57
 
58
58
  if TYPE_CHECKING:
59
59
  from azure.core.polling import LROPoller
@@ -27,6 +27,7 @@ from typing import TYPE_CHECKING, Any
27
27
  from urllib.parse import quote, urljoin, urlparse
28
28
 
29
29
  import httpx
30
+ from azure.identity import CertificateCredential, ClientSecretCredential
30
31
  from httpx import AsyncHTTPTransport, Timeout
31
32
  from kiota_abstractions.api_error import APIError
32
33
  from kiota_abstractions.method import Method
@@ -50,9 +51,9 @@ from airflow.exceptions import (
50
51
  AirflowNotFoundException,
51
52
  )
52
53
  from airflow.hooks.base import BaseHook
53
- from azure.identity import CertificateCredential, ClientSecretCredential
54
54
 
55
55
  if TYPE_CHECKING:
56
+ from azure.identity._internal.client_credential_base import ClientCredentialBase
56
57
  from kiota_abstractions.request_adapter import RequestAdapter
57
58
  from kiota_abstractions.request_information import QueryParams
58
59
  from kiota_abstractions.response_handler import NativeResponseType
@@ -60,7 +61,6 @@ if TYPE_CHECKING:
60
61
  from kiota_http.httpx_request_adapter import ResponseType
61
62
 
62
63
  from airflow.models import Connection
63
- from azure.identity._internal.client_credential_base import ClientCredentialBase
64
64
 
65
65
 
66
66
  class DefaultResponseHandler(ResponseHandler):
@@ -32,15 +32,6 @@ from functools import cached_property
32
32
  from typing import TYPE_CHECKING, Any, Union
33
33
 
34
34
  from asgiref.sync import sync_to_async
35
-
36
- from airflow.exceptions import AirflowException
37
- from airflow.hooks.base import BaseHook
38
- from airflow.providers.microsoft.azure.utils import (
39
- add_managed_identity_connection_widgets,
40
- get_async_default_azure_credential,
41
- get_sync_default_azure_credential,
42
- parse_blob_account_url,
43
- )
44
35
  from azure.core.exceptions import HttpResponseError, ResourceExistsError, ResourceNotFoundError
45
36
  from azure.identity import ClientSecretCredential
46
37
  from azure.identity.aio import (
@@ -54,6 +45,15 @@ from azure.storage.blob.aio import (
54
45
  ContainerClient as AsyncContainerClient,
55
46
  )
56
47
 
48
+ from airflow.exceptions import AirflowException
49
+ from airflow.hooks.base import BaseHook
50
+ from airflow.providers.microsoft.azure.utils import (
51
+ add_managed_identity_connection_widgets,
52
+ get_async_default_azure_credential,
53
+ get_sync_default_azure_credential,
54
+ parse_blob_account_url,
55
+ )
56
+
57
57
  if TYPE_CHECKING:
58
58
  from azure.storage.blob._models import BlobProperties
59
59
 
@@ -23,13 +23,6 @@ from collections import namedtuple
23
23
  from collections.abc import Sequence
24
24
  from typing import TYPE_CHECKING, Any
25
25
 
26
- from msrestazure.azure_exceptions import CloudError
27
-
28
- from airflow.exceptions import AirflowException, AirflowTaskTimeout
29
- from airflow.models import BaseOperator
30
- from airflow.providers.microsoft.azure.hooks.container_instance import AzureContainerInstanceHook
31
- from airflow.providers.microsoft.azure.hooks.container_registry import AzureContainerRegistryHook
32
- from airflow.providers.microsoft.azure.hooks.container_volume import AzureContainerVolumeHook
33
26
  from azure.mgmt.containerinstance.models import (
34
27
  Container,
35
28
  ContainerGroup,
@@ -44,6 +37,13 @@ from azure.mgmt.containerinstance.models import (
44
37
  Volume as _AzureVolume,
45
38
  VolumeMount,
46
39
  )
40
+ from msrestazure.azure_exceptions import CloudError
41
+
42
+ from airflow.exceptions import AirflowException, AirflowTaskTimeout
43
+ from airflow.models import BaseOperator
44
+ from airflow.providers.microsoft.azure.hooks.container_instance import AzureContainerInstanceHook
45
+ from airflow.providers.microsoft.azure.hooks.container_registry import AzureContainerRegistryHook
46
+ from airflow.providers.microsoft.azure.hooks.container_volume import AzureContainerVolumeHook
47
47
 
48
48
  if TYPE_CHECKING:
49
49
  from airflow.utils.context import Context