azure-storage-blob 12.26.0__py3-none-any.whl → 12.27.0__py3-none-any.whl

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 (50) hide show
  1. azure/storage/blob/__init__.py +3 -3
  2. azure/storage/blob/_blob_client.py +16 -0
  3. azure/storage/blob/_blob_client.pyi +780 -0
  4. azure/storage/blob/_blob_service_client.py +41 -4
  5. azure/storage/blob/_blob_service_client.pyi +182 -0
  6. azure/storage/blob/_container_client.py +22 -0
  7. azure/storage/blob/_container_client.pyi +380 -0
  8. azure/storage/blob/_generated/_azure_blob_storage.py +3 -2
  9. azure/storage/blob/_generated/_configuration.py +2 -2
  10. azure/storage/blob/_generated/_utils/__init__.py +6 -0
  11. azure/storage/blob/_generated/{_serialization.py → _utils/serialization.py} +4 -22
  12. azure/storage/blob/_generated/aio/_azure_blob_storage.py +3 -2
  13. azure/storage/blob/_generated/aio/_configuration.py +2 -2
  14. azure/storage/blob/_generated/aio/operations/_append_blob_operations.py +6 -10
  15. azure/storage/blob/_generated/aio/operations/_blob_operations.py +35 -39
  16. azure/storage/blob/_generated/aio/operations/_block_blob_operations.py +9 -13
  17. azure/storage/blob/_generated/aio/operations/_container_operations.py +20 -24
  18. azure/storage/blob/_generated/aio/operations/_page_blob_operations.py +13 -17
  19. azure/storage/blob/_generated/aio/operations/_service_operations.py +10 -14
  20. azure/storage/blob/_generated/models/_models_py3.py +30 -9
  21. azure/storage/blob/_generated/operations/_append_blob_operations.py +11 -15
  22. azure/storage/blob/_generated/operations/_blob_operations.py +60 -64
  23. azure/storage/blob/_generated/operations/_block_blob_operations.py +16 -20
  24. azure/storage/blob/_generated/operations/_container_operations.py +39 -43
  25. azure/storage/blob/_generated/operations/_page_blob_operations.py +23 -27
  26. azure/storage/blob/_generated/operations/_service_operations.py +19 -23
  27. azure/storage/blob/_lease.py +2 -2
  28. azure/storage/blob/_lease.pyi +81 -0
  29. azure/storage/blob/_list_blobs_helper.py +1 -1
  30. azure/storage/blob/_serialize.py +1 -0
  31. azure/storage/blob/_shared/base_client.py +0 -13
  32. azure/storage/blob/_shared/base_client_async.py +0 -22
  33. azure/storage/blob/_shared/models.py +1 -0
  34. azure/storage/blob/_shared/policies.py +10 -2
  35. azure/storage/blob/_shared/response_handlers.py +5 -0
  36. azure/storage/blob/_version.py +1 -1
  37. azure/storage/blob/aio/__init__.py +5 -8
  38. azure/storage/blob/aio/_blob_client_async.py +28 -8
  39. azure/storage/blob/aio/_blob_client_async.pyi +763 -0
  40. azure/storage/blob/aio/_blob_service_client_async.py +41 -4
  41. azure/storage/blob/aio/_blob_service_client_async.pyi +187 -0
  42. azure/storage/blob/aio/_container_client_async.py +27 -1
  43. azure/storage/blob/aio/_container_client_async.pyi +384 -0
  44. azure/storage/blob/aio/_lease_async.py +2 -2
  45. azure/storage/blob/aio/_lease_async.pyi +81 -0
  46. {azure_storage_blob-12.26.0.dist-info → azure_storage_blob-12.27.0.dist-info}/METADATA +17 -5
  47. {azure_storage_blob-12.26.0.dist-info → azure_storage_blob-12.27.0.dist-info}/RECORD +50 -41
  48. {azure_storage_blob-12.26.0.dist-info → azure_storage_blob-12.27.0.dist-info}/WHEEL +1 -1
  49. {azure_storage_blob-12.26.0.dist-info → azure_storage_blob-12.27.0.dist-info/licenses}/LICENSE +0 -0
  50. {azure_storage_blob-12.26.0.dist-info → azure_storage_blob-12.27.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,384 @@
1
+ # -------------------------------------------------------------------------
2
+ # Copyright (c) Microsoft Corporation. All rights reserved.
3
+ # Licensed under the MIT License. See License.txt in the project root for
4
+ # license information.
5
+ # --------------------------------------------------------------------------
6
+ # pylint: skip-file
7
+
8
+ from datetime import datetime
9
+ from types import TracebackType
10
+ from typing import (
11
+ Any,
12
+ AnyStr,
13
+ AsyncIterable,
14
+ AsyncIterator,
15
+ Awaitable,
16
+ Callable,
17
+ Dict,
18
+ List,
19
+ IO,
20
+ Iterable,
21
+ Optional,
22
+ overload,
23
+ Union,
24
+ )
25
+ from typing_extensions import Self
26
+
27
+ from azure.core import MatchConditions
28
+ from azure.core.async_paging import AsyncItemPaged
29
+ from azure.core.credentials import AzureNamedKeyCredential, AzureSasCredential
30
+ from azure.core.credentials_async import AsyncTokenCredential
31
+ from azure.core.pipeline.transport import AsyncHttpResponse
32
+ from azure.core.tracing.decorator import distributed_trace
33
+ from azure.core.tracing.decorator_async import distributed_trace_async
34
+
35
+ from ._blob_client_async import BlobClient
36
+ from ._blob_service_client_async import BlobServiceClient
37
+ from ._download_async import StorageStreamDownloader
38
+ from ._lease_async import BlobLeaseClient
39
+ from ._list_blobs_helper import BlobPrefix
40
+ from .._encryption import StorageEncryptionMixin
41
+ from .._generated.models import RehydratePriority
42
+ from .._models import (
43
+ AccessPolicy,
44
+ BlobType,
45
+ BlobProperties,
46
+ ContainerEncryptionScope,
47
+ ContainerProperties,
48
+ ContentSettings,
49
+ CustomerProvidedEncryptionKey,
50
+ FilteredBlob,
51
+ PremiumPageBlobTier,
52
+ PublicAccess,
53
+ StandardBlobTier,
54
+ )
55
+ from .._shared.base_client import StorageAccountHostsMixin
56
+ from .._shared.base_client_async import AsyncStorageAccountHostsMixin
57
+
58
+ class ContainerClient( # type: ignore[misc]
59
+ AsyncStorageAccountHostsMixin, StorageAccountHostsMixin, StorageEncryptionMixin
60
+ ):
61
+ account_name: str
62
+ container_name: str
63
+ def __init__(
64
+ self,
65
+ account_url: str,
66
+ container_name: str,
67
+ credential: Optional[
68
+ Union[str, Dict[str, str], AzureNamedKeyCredential, AzureSasCredential, AsyncTokenCredential]
69
+ ] = None,
70
+ *,
71
+ api_version: Optional[str] = None,
72
+ secondary_hostname: Optional[str] = None,
73
+ audience: Optional[str] = None,
74
+ max_block_size: int = 4 * 1024 * 1024,
75
+ max_page_size: int = 4 * 1024 * 1024,
76
+ max_chunk_get_size: int = 4 * 1024 * 1024,
77
+ max_single_put_size: int = 64 * 1024 * 1024,
78
+ max_single_get_size: int = 32 * 1024 * 1024,
79
+ min_large_block_upload_threshold: int = 4 * 1024 * 1024 + 1,
80
+ use_byte_buffer: Optional[bool] = None,
81
+ **kwargs: Any
82
+ ) -> None: ...
83
+ async def __aenter__(self) -> Self: ...
84
+ async def __aexit__(
85
+ self, typ: Optional[type[BaseException]], exc: Optional[BaseException], tb: Optional[TracebackType]
86
+ ) -> None: ...
87
+ async def close(self) -> None: ...
88
+ @classmethod
89
+ def from_container_url(
90
+ cls,
91
+ container_url: str,
92
+ credential: Optional[
93
+ Union[str, Dict[str, str], AzureNamedKeyCredential, AzureSasCredential, AsyncTokenCredential]
94
+ ] = None,
95
+ *,
96
+ api_version: Optional[str] = None,
97
+ secondary_hostname: Optional[str] = None,
98
+ audience: Optional[str] = None,
99
+ max_block_size: int = 4 * 1024 * 1024,
100
+ max_page_size: int = 4 * 1024 * 1024,
101
+ max_chunk_get_size: int = 4 * 1024 * 1024,
102
+ max_single_put_size: int = 64 * 1024 * 1024,
103
+ max_single_get_size: int = 32 * 1024 * 1024,
104
+ min_large_block_upload_threshold: int = 4 * 1024 * 1024 + 1,
105
+ use_byte_buffer: Optional[bool] = None,
106
+ **kwargs: Any
107
+ ) -> Self: ...
108
+ @classmethod
109
+ def from_connection_string(
110
+ cls,
111
+ conn_str: str,
112
+ container_name: str,
113
+ credential: Optional[
114
+ Union[str, Dict[str, str], AzureNamedKeyCredential, AzureSasCredential, AsyncTokenCredential]
115
+ ] = None,
116
+ *,
117
+ api_version: Optional[str] = None,
118
+ secondary_hostname: Optional[str] = None,
119
+ audience: Optional[str] = None,
120
+ max_block_size: int = 4 * 1024 * 1024,
121
+ max_page_size: int = 4 * 1024 * 1024,
122
+ max_chunk_get_size: int = 4 * 1024 * 1024,
123
+ max_single_put_size: int = 64 * 1024 * 1024,
124
+ max_single_get_size: int = 32 * 1024 * 1024,
125
+ min_large_block_upload_threshold: int = 4 * 1024 * 1024 + 1,
126
+ use_byte_buffer: Optional[bool] = None,
127
+ **kwargs: Any
128
+ ) -> Self: ...
129
+ @distributed_trace_async
130
+ async def create_container(
131
+ self,
132
+ metadata: Optional[Dict[str, str]] = None,
133
+ public_access: Optional[Union[PublicAccess, str]] = None,
134
+ *,
135
+ container_encryption_scope: Optional[Union[Dict[str, Any], ContainerEncryptionScope]] = None,
136
+ timeout: Optional[int] = None,
137
+ **kwargs: Any
138
+ ) -> Dict[str, Union[str, datetime]]: ...
139
+ @distributed_trace_async
140
+ async def _rename_container(
141
+ self,
142
+ new_name: str,
143
+ *,
144
+ lease: Optional[Union[BlobLeaseClient, str]] = None,
145
+ timeout: Optional[int] = None,
146
+ **kwargs: Any
147
+ ) -> "ContainerClient": ...
148
+ @distributed_trace_async
149
+ async def delete_container(
150
+ self,
151
+ *,
152
+ lease: Optional[Union[BlobLeaseClient, str]] = None,
153
+ if_modified_since: Optional[datetime] = None,
154
+ if_unmodified_since: Optional[datetime] = None,
155
+ etag: Optional[str] = None,
156
+ match_condition: Optional[MatchConditions] = None,
157
+ timeout: Optional[int] = None,
158
+ **kwargs: Any
159
+ ) -> None: ...
160
+ @distributed_trace_async
161
+ async def acquire_lease(
162
+ self,
163
+ lease_duration: int = -1,
164
+ lease_id: Optional[str] = None,
165
+ *,
166
+ if_modified_since: Optional[datetime] = None,
167
+ if_unmodified_since: Optional[datetime] = None,
168
+ etag: Optional[str] = None,
169
+ match_condition: Optional[MatchConditions] = None,
170
+ timeout: Optional[int] = None,
171
+ **kwargs: Any
172
+ ) -> BlobLeaseClient: ...
173
+ @distributed_trace_async
174
+ async def get_account_information(self, **kwargs: Any) -> Dict[str, str]: ...
175
+ @distributed_trace_async
176
+ async def get_container_properties(
177
+ self, *, lease: Optional[Union[BlobLeaseClient, str]] = None, timeout: Optional[int] = None, **kwargs: Any
178
+ ) -> ContainerProperties: ...
179
+ @distributed_trace_async
180
+ async def exists(self, *, timeout: Optional[int] = None, **kwargs: Any) -> bool: ...
181
+ @distributed_trace_async
182
+ async def set_container_metadata(
183
+ self,
184
+ metadata: Optional[Dict[str, str]] = None,
185
+ *,
186
+ lease: Optional[Union[BlobLeaseClient, str]] = None,
187
+ if_modified_since: Optional[datetime] = None,
188
+ timeout: Optional[int] = None,
189
+ **kwargs: Any
190
+ ) -> Dict[str, Union[str, datetime]]: ...
191
+ @distributed_trace
192
+ def _get_blob_service_client(self) -> BlobServiceClient: ...
193
+ @distributed_trace_async
194
+ async def get_container_access_policy(
195
+ self, *, lease: Optional[Union[BlobLeaseClient, str]] = None, timeout: Optional[int] = None, **kwargs: Any
196
+ ) -> Dict[str, Any]: ...
197
+ @distributed_trace_async
198
+ async def set_container_access_policy(
199
+ self,
200
+ signed_identifiers: Dict[str, AccessPolicy],
201
+ public_access: Optional[Union[str, PublicAccess]] = None,
202
+ *,
203
+ lease: Optional[Union[BlobLeaseClient, str]] = None,
204
+ if_modified_since: Optional[datetime] = None,
205
+ if_unmodified_since: Optional[datetime] = None,
206
+ timeout: Optional[int] = None,
207
+ **kwargs: Any
208
+ ) -> Dict[str, Union[str, datetime]]: ...
209
+ @distributed_trace
210
+ def list_blobs(
211
+ self,
212
+ name_starts_with: Optional[str] = None,
213
+ include: Optional[Union[str, List[str]]] = None,
214
+ *,
215
+ timeout: Optional[int] = None,
216
+ **kwargs: Any
217
+ ) -> AsyncItemPaged[BlobProperties]: ...
218
+ @distributed_trace
219
+ def list_blob_names(
220
+ self, *, name_starts_with: Optional[str] = None, timeout: Optional[int] = None, **kwargs: Any
221
+ ) -> AsyncItemPaged[str]: ...
222
+ @distributed_trace
223
+ def walk_blobs(
224
+ self,
225
+ name_starts_with: Optional[str] = None,
226
+ include: Optional[Union[List[str], str]] = None,
227
+ delimiter: str = "/",
228
+ **kwargs: Any
229
+ ) -> AsyncItemPaged[Union[BlobProperties, BlobPrefix]]: ...
230
+ @distributed_trace
231
+ def find_blobs_by_tags(
232
+ self,
233
+ filter_expression: str,
234
+ *,
235
+ results_per_page: Optional[int] = None,
236
+ timeout: Optional[int] = None,
237
+ **kwargs: Any
238
+ ) -> AsyncItemPaged[FilteredBlob]: ...
239
+ @distributed_trace_async
240
+ async def upload_blob(
241
+ self,
242
+ name: str,
243
+ data: Union[bytes, str, Iterable[AnyStr], AsyncIterable[AnyStr], IO[AnyStr]],
244
+ blob_type: Union[str, BlobType] = BlobType.BLOCKBLOB,
245
+ length: Optional[int] = None,
246
+ metadata: Optional[Dict[str, str]] = None,
247
+ *,
248
+ overwrite: Optional[bool] = None,
249
+ content_settings: Optional[ContentSettings] = None,
250
+ validate_content: Optional[bool] = None,
251
+ lease: Optional[Union[BlobLeaseClient, str]] = None,
252
+ if_modified_since: Optional[datetime] = None,
253
+ if_unmodified_since: Optional[datetime] = None,
254
+ etag: Optional[str] = None,
255
+ match_condition: Optional[MatchConditions] = None,
256
+ if_tags_match_condition: Optional[str] = None,
257
+ timeout: Optional[int] = None,
258
+ premium_page_blob_tier: Optional[PremiumPageBlobTier] = None,
259
+ standard_blob_tier: Optional[StandardBlobTier] = None,
260
+ maxsize_condition: Optional[int] = None,
261
+ max_concurrency: Optional[int] = None,
262
+ cpk: Optional[CustomerProvidedEncryptionKey] = None,
263
+ encryption_scope: Optional[str] = None,
264
+ encoding: Optional[str] = None,
265
+ progress_hook: Optional[Callable[[int, Optional[int]], Awaitable[None]]] = None,
266
+ **kwargs: Any
267
+ ) -> BlobClient: ...
268
+ @distributed_trace_async
269
+ async def delete_blob(
270
+ self,
271
+ blob: str,
272
+ delete_snapshots: Optional[str] = None,
273
+ *,
274
+ version_id: Optional[str] = None,
275
+ lease: Optional[Union[BlobLeaseClient, str]] = None,
276
+ if_modified_since: Optional[datetime] = None,
277
+ if_unmodified_since: Optional[datetime] = None,
278
+ etag: Optional[str] = None,
279
+ match_condition: Optional[MatchConditions] = None,
280
+ if_tags_match_condition: Optional[str] = None,
281
+ timeout: Optional[int] = None,
282
+ **kwargs: Any
283
+ ) -> None: ...
284
+ @overload
285
+ async def download_blob(
286
+ self,
287
+ blob: str,
288
+ offset: Optional[int] = None,
289
+ length: Optional[int] = None,
290
+ *,
291
+ version_id: Optional[str] = None,
292
+ validate_content: Optional[bool] = None,
293
+ lease: Optional[Union[BlobLeaseClient, str]] = None,
294
+ if_modified_since: Optional[datetime] = None,
295
+ if_unmodified_since: Optional[datetime] = None,
296
+ etag: Optional[str] = None,
297
+ match_condition: Optional[MatchConditions] = None,
298
+ if_tags_match_condition: Optional[str] = None,
299
+ cpk: Optional[CustomerProvidedEncryptionKey] = None,
300
+ max_concurrency: Optional[int] = None,
301
+ encoding: str,
302
+ progress_hook: Optional[Callable[[int, int], Awaitable[None]]] = None,
303
+ timeout: Optional[int] = None,
304
+ **kwargs: Any
305
+ ) -> StorageStreamDownloader[str]: ...
306
+ @overload
307
+ async def download_blob(
308
+ self,
309
+ blob: str,
310
+ offset: Optional[int] = None,
311
+ length: Optional[int] = None,
312
+ *,
313
+ version_id: Optional[str] = None,
314
+ validate_content: Optional[bool] = None,
315
+ lease: Optional[Union[BlobLeaseClient, str]] = None,
316
+ if_modified_since: Optional[datetime] = None,
317
+ if_unmodified_since: Optional[datetime] = None,
318
+ etag: Optional[str] = None,
319
+ match_condition: Optional[MatchConditions] = None,
320
+ if_tags_match_condition: Optional[str] = None,
321
+ cpk: Optional[CustomerProvidedEncryptionKey] = None,
322
+ max_concurrency: Optional[int] = None,
323
+ encoding: None = None,
324
+ progress_hook: Optional[Callable[[int, int], Awaitable[None]]] = None,
325
+ timeout: Optional[int] = None,
326
+ **kwargs: Any
327
+ ) -> StorageStreamDownloader[bytes]: ...
328
+ @distributed_trace_async # type: ignore[misc]
329
+ async def download_blob(
330
+ self,
331
+ blob: str,
332
+ offset: Optional[int] = None,
333
+ length: Optional[int] = None,
334
+ *,
335
+ version_id: Optional[str] = None,
336
+ validate_content: Optional[bool] = None,
337
+ lease: Optional[Union[BlobLeaseClient, str]] = None,
338
+ if_modified_since: Optional[datetime] = None,
339
+ if_unmodified_since: Optional[datetime] = None,
340
+ etag: Optional[str] = None,
341
+ match_condition: Optional[MatchConditions] = None,
342
+ if_tags_match_condition: Optional[str] = None,
343
+ cpk: Optional[CustomerProvidedEncryptionKey] = None,
344
+ max_concurrency: Optional[int] = None,
345
+ encoding: Optional[str] = None,
346
+ progress_hook: Optional[Callable[[int, int], Awaitable[None]]] = None,
347
+ timeout: Optional[int] = None,
348
+ **kwargs: Any
349
+ ) -> Union[StorageStreamDownloader[str], StorageStreamDownloader[bytes]]: ...
350
+ @distributed_trace_async
351
+ async def delete_blobs(
352
+ self,
353
+ *blobs: Union[str, Dict[str, Any], BlobProperties],
354
+ delete_snapshots: Optional[str] = None,
355
+ if_modified_since: Optional[datetime] = None,
356
+ if_unmodified_since: Optional[datetime] = None,
357
+ if_tags_match_condition: Optional[str] = None,
358
+ raise_on_any_failure: bool = True,
359
+ timeout: Optional[int] = None,
360
+ **kwargs: Any
361
+ ) -> AsyncIterator[AsyncHttpResponse]: ...
362
+ @distributed_trace_async
363
+ async def set_standard_blob_tier_blobs(
364
+ self,
365
+ standard_blob_tier: Union[str, StandardBlobTier],
366
+ *blobs: Union[str, Dict[str, Any], BlobProperties],
367
+ rehydrate_priority: Optional[RehydratePriority] = None,
368
+ if_tags_match_condition: Optional[str] = None,
369
+ raise_on_any_failure: bool = True,
370
+ timeout: Optional[int] = None,
371
+ **kwargs: Any
372
+ ) -> AsyncIterator[AsyncHttpResponse]: ...
373
+ @distributed_trace_async
374
+ async def set_premium_page_blob_tier_blobs(
375
+ self,
376
+ premium_page_blob_tier: Union[str, PremiumPageBlobTier],
377
+ *blobs: Union[str, Dict[str, Any], BlobProperties],
378
+ raise_on_any_failure: bool = True,
379
+ timeout: Optional[int] = None,
380
+ **kwargs: Any
381
+ ) -> AsyncIterator[AsyncHttpResponse]: ...
382
+ def get_blob_client(
383
+ self, blob: str, snapshot: Optional[str] = None, *, version_id: Optional[str] = None
384
+ ) -> BlobClient: ...
@@ -19,7 +19,7 @@ if TYPE_CHECKING:
19
19
  from datetime import datetime
20
20
 
21
21
 
22
- class BlobLeaseClient(): # pylint: disable=client-accepts-api-version-keyword
22
+ class BlobLeaseClient: # pylint: disable=client-accepts-api-version-keyword
23
23
  """Creates a new BlobLeaseClient.
24
24
 
25
25
  This client provides lease operations on a BlobClient or ContainerClient.
@@ -40,7 +40,7 @@ class BlobLeaseClient(): # pylint: disable=client-accepts-api-version-keyword
40
40
  """The last modified timestamp of the lease currently being maintained.
41
41
  This will be `None` if no lease has yet been acquired or modified."""
42
42
 
43
- def __init__( # pylint: disable=missing-client-constructor-parameter-credential, missing-client-constructor-parameter-kwargs
43
+ def __init__( # pylint: disable=missing-client-constructor-parameter-credential, missing-client-constructor-parameter-kwargs
44
44
  self, client: Union["BlobClient", "ContainerClient"],
45
45
  lease_id: Optional[str] = None
46
46
  ) -> None:
@@ -0,0 +1,81 @@
1
+ # -------------------------------------------------------------------------
2
+ # Copyright (c) Microsoft Corporation. All rights reserved.
3
+ # Licensed under the MIT License. See License.txt in the project root for
4
+ # license information.
5
+ # --------------------------------------------------------------------------
6
+ # pylint: skip-file
7
+
8
+ from datetime import datetime
9
+ from typing import Any, Optional, Union
10
+
11
+ from azure.core import MatchConditions
12
+ from azure.core.tracing.decorator_async import distributed_trace_async
13
+ from ._blob_client_async import BlobClient
14
+ from ._container_client_async import ContainerClient
15
+
16
+ class BlobLeaseClient:
17
+ id: str
18
+ etag: Optional[str]
19
+ last_modified: Optional[datetime]
20
+ def __init__(self, client: Union[BlobClient, ContainerClient], lease_id: Optional[str] = None) -> None: ...
21
+ @distributed_trace_async
22
+ async def acquire(
23
+ self,
24
+ lease_duration: int = -1,
25
+ *,
26
+ if_modified_since: Optional[datetime] = None,
27
+ if_unmodified_since: Optional[datetime] = None,
28
+ etag: Optional[str] = None,
29
+ match_condition: Optional[MatchConditions] = None,
30
+ if_tags_match_condition: Optional[str] = None,
31
+ timeout: Optional[int] = None,
32
+ **kwargs: Any
33
+ ) -> None: ...
34
+ @distributed_trace_async
35
+ async def renew(
36
+ self,
37
+ *,
38
+ if_modified_since: Optional[datetime] = None,
39
+ if_unmodified_since: Optional[datetime] = None,
40
+ etag: Optional[str] = None,
41
+ match_condition: Optional[MatchConditions] = None,
42
+ if_tags_match_condition: Optional[str] = None,
43
+ timeout: Optional[int] = None,
44
+ **kwargs: Any
45
+ ) -> None: ...
46
+ @distributed_trace_async
47
+ async def release(
48
+ self,
49
+ *,
50
+ if_modified_since: Optional[datetime] = None,
51
+ if_unmodified_since: Optional[datetime] = None,
52
+ etag: Optional[str] = None,
53
+ match_condition: Optional[MatchConditions] = None,
54
+ if_tags_match_condition: Optional[str] = None,
55
+ timeout: Optional[int] = None,
56
+ **kwargs: Any
57
+ ) -> None: ...
58
+ @distributed_trace_async
59
+ async def change(
60
+ self,
61
+ proposed_lease_id: str,
62
+ *,
63
+ if_modified_since: Optional[datetime] = None,
64
+ if_unmodified_since: Optional[datetime] = None,
65
+ etag: Optional[str] = None,
66
+ match_condition: Optional[MatchConditions] = None,
67
+ if_tags_match_condition: Optional[str] = None,
68
+ timeout: Optional[int] = None,
69
+ **kwargs: Any
70
+ ) -> None: ...
71
+ @distributed_trace_async
72
+ async def break_lease(
73
+ self,
74
+ lease_break_period: Optional[int] = None,
75
+ *,
76
+ if_modified_since: Optional[datetime] = None,
77
+ if_unmodified_since: Optional[datetime] = None,
78
+ if_tags_match_condition: Optional[str] = None,
79
+ timeout: Optional[int] = None,
80
+ **kwargs: Any
81
+ ) -> int: ...
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: azure-storage-blob
3
- Version: 12.26.0
3
+ Version: 12.27.0
4
4
  Summary: Microsoft Azure Blob Storage Client Library for Python
5
5
  Home-page: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/storage/azure-storage-blob
6
6
  Author: Microsoft Corporation
@@ -11,13 +11,12 @@ Classifier: Development Status :: 5 - Production/Stable
11
11
  Classifier: Programming Language :: Python
12
12
  Classifier: Programming Language :: Python :: 3 :: Only
13
13
  Classifier: Programming Language :: Python :: 3
14
- Classifier: Programming Language :: Python :: 3.8
15
14
  Classifier: Programming Language :: Python :: 3.9
16
15
  Classifier: Programming Language :: Python :: 3.10
17
16
  Classifier: Programming Language :: Python :: 3.11
18
17
  Classifier: Programming Language :: Python :: 3.12
19
18
  Classifier: License :: OSI Approved :: MIT License
20
- Requires-Python: >=3.8
19
+ Requires-Python: >=3.9
21
20
  Description-Content-Type: text/markdown
22
21
  License-File: LICENSE
23
22
  Requires-Dist: azure-core>=1.30.0
@@ -26,6 +25,19 @@ Requires-Dist: typing-extensions>=4.6.0
26
25
  Requires-Dist: isodate>=0.6.1
27
26
  Provides-Extra: aio
28
27
  Requires-Dist: azure-core[aio]>=1.30.0; extra == "aio"
28
+ Dynamic: author
29
+ Dynamic: author-email
30
+ Dynamic: classifier
31
+ Dynamic: description
32
+ Dynamic: description-content-type
33
+ Dynamic: home-page
34
+ Dynamic: keywords
35
+ Dynamic: license
36
+ Dynamic: license-file
37
+ Dynamic: provides-extra
38
+ Dynamic: requires-dist
39
+ Dynamic: requires-python
40
+ Dynamic: summary
29
41
 
30
42
  # Azure Storage Blobs client library for Python
31
43
  Azure Blob storage is Microsoft's object storage solution for the cloud. Blob storage is optimized for storing massive amounts of unstructured data, such as text or binary data.
@@ -49,7 +61,7 @@ Blob storage is ideal for:
49
61
  ## Getting started
50
62
 
51
63
  ### Prerequisites
52
- * Python 3.8 or later is required to use this package. For more details, please read our page on [Azure SDK for Python version support policy](https://github.com/Azure/azure-sdk-for-python/wiki/Azure-SDKs-Python-version-support-policy).
64
+ * Python 3.9 or later is required to use this package. For more details, please read our page on [Azure SDK for Python version support policy](https://github.com/Azure/azure-sdk-for-python/wiki/Azure-SDKs-Python-version-support-policy).
53
65
  * You must have an [Azure subscription](https://azure.microsoft.com/free/) and an
54
66
  [Azure storage account](https://learn.microsoft.com/azure/storage/common/storage-account-overview) to use this package.
55
67