azure-storage-blob 12.22.0__py3-none-any.whl → 12.23.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 (32) hide show
  1. azure/storage/blob/_container_client.py +6 -0
  2. azure/storage/blob/_container_client_helpers.py +7 -2
  3. azure/storage/blob/_generated/_azure_blob_storage.py +2 -1
  4. azure/storage/blob/_generated/_serialization.py +2 -0
  5. azure/storage/blob/_generated/aio/_azure_blob_storage.py +2 -1
  6. azure/storage/blob/_generated/aio/operations/_append_blob_operations.py +1 -7
  7. azure/storage/blob/_generated/aio/operations/_blob_operations.py +21 -47
  8. azure/storage/blob/_generated/aio/operations/_block_blob_operations.py +2 -10
  9. azure/storage/blob/_generated/aio/operations/_container_operations.py +13 -26
  10. azure/storage/blob/_generated/aio/operations/_page_blob_operations.py +3 -14
  11. azure/storage/blob/_generated/aio/operations/_service_operations.py +14 -17
  12. azure/storage/blob/_generated/operations/_append_blob_operations.py +1 -7
  13. azure/storage/blob/_generated/operations/_blob_operations.py +21 -47
  14. azure/storage/blob/_generated/operations/_block_blob_operations.py +2 -10
  15. azure/storage/blob/_generated/operations/_container_operations.py +13 -26
  16. azure/storage/blob/_generated/operations/_page_blob_operations.py +3 -14
  17. azure/storage/blob/_generated/operations/_service_operations.py +14 -17
  18. azure/storage/blob/_serialize.py +1 -0
  19. azure/storage/blob/_shared/base_client.py +2 -0
  20. azure/storage/blob/_shared/policies.py +8 -9
  21. azure/storage/blob/_shared/policies_async.py +18 -5
  22. azure/storage/blob/_shared/shared_access_signature.py +20 -2
  23. azure/storage/blob/_shared_access_signature.py +42 -1
  24. azure/storage/blob/_version.py +1 -1
  25. azure/storage/blob/aio/_container_client_async.py +6 -0
  26. azure/storage/blob/aio/_download_async.py +94 -71
  27. {azure_storage_blob-12.22.0.dist-info → azure_storage_blob-12.23.0.dist-info}/METADATA +3 -3
  28. {azure_storage_blob-12.22.0.dist-info → azure_storage_blob-12.23.0.dist-info}/RECORD +31 -32
  29. {azure_storage_blob-12.22.0.dist-info → azure_storage_blob-12.23.0.dist-info}/WHEEL +1 -1
  30. azure/storage/blob/_generated/_vendor.py +0 -16
  31. {azure_storage_blob-12.22.0.dist-info → azure_storage_blob-12.23.0.dist-info}/LICENSE +0 -0
  32. {azure_storage_blob-12.22.0.dist-info → azure_storage_blob-12.23.0.dist-info}/top_level.txt +0 -0
@@ -19,7 +19,7 @@ from typing import (
19
19
  Tuple, TypeVar, Union, TYPE_CHECKING
20
20
  )
21
21
 
22
- from azure.core.exceptions import HttpResponseError
22
+ from azure.core.exceptions import DecodeError, HttpResponseError, IncompleteReadError
23
23
 
24
24
  from .._shared.request_handlers import validate_and_format_range_headers
25
25
  from .._shared.response_handlers import parse_length_from_content_range, process_storage_error
@@ -46,7 +46,8 @@ T = TypeVar('T', bytes, str)
46
46
  async def process_content(data: Any, start_offset: int, end_offset: int, encryption: Dict[str, Any]) -> bytes:
47
47
  if data is None:
48
48
  raise ValueError("Response cannot be None.")
49
- content = cast(bytes, data.response.body())
49
+ await data.response.read()
50
+ content = cast(bytes, data.response.content)
50
51
  if encryption.get('key') is not None or encryption.get('resolver') is not None:
51
52
  try:
52
53
  return decrypt_blob(
@@ -120,20 +121,30 @@ class _AsyncChunkDownloader(_ChunkDownloader):
120
121
  download_range[1],
121
122
  check_content_md5=self.validate_content
122
123
  )
123
- try:
124
- _, response = await cast(Awaitable[Any], self.client.download(
125
- range=range_header,
126
- range_get_content_md5=range_validation,
127
- validate_content=self.validate_content,
128
- data_stream_total=self.total_size,
129
- download_stream_current=self.progress_total,
130
- **self.request_options
131
- ))
132
124
 
133
- except HttpResponseError as error:
134
- process_storage_error(error)
125
+ retry_active = True
126
+ retry_total = 3
127
+ while retry_active:
128
+ try:
129
+ _, response = await cast(Awaitable[Any], self.client.download(
130
+ range=range_header,
131
+ range_get_content_md5=range_validation,
132
+ validate_content=self.validate_content,
133
+ data_stream_total=self.total_size,
134
+ download_stream_current=self.progress_total,
135
+ **self.request_options
136
+ ))
137
+ except HttpResponseError as error:
138
+ process_storage_error(error)
135
139
 
136
- chunk_data = await process_content(response, offset[0], offset[1], self.encryption_options)
140
+ try:
141
+ chunk_data = await process_content(response, offset[0], offset[1], self.encryption_options)
142
+ retry_active = False
143
+ except (IncompleteReadError, HttpResponseError, DecodeError) as error:
144
+ retry_total -= 1
145
+ if retry_total <= 0:
146
+ raise HttpResponseError(error, error=error) from error
147
+ await asyncio.sleep(1)
137
148
  content_length = response.content_length
138
149
 
139
150
  # This makes sure that if_match is set so that we can validate
@@ -342,66 +353,78 @@ class StorageStreamDownloader(Generic[T]): # pylint: disable=too-many-instance-
342
353
  self._initial_range[1],
343
354
  start_range_required=False,
344
355
  end_range_required=False,
345
- check_content_md5=self._validate_content)
356
+ check_content_md5=self._validate_content
357
+ )
346
358
 
347
- try:
348
- location_mode, response = cast(Tuple[Optional[str], Any], await self._clients.blob.download(
349
- range=range_header,
350
- range_get_content_md5=range_validation,
351
- validate_content=self._validate_content,
352
- data_stream_total=None,
353
- download_stream_current=0,
354
- **self._request_options))
355
-
356
- # Check the location we read from to ensure we use the same one
357
- # for subsequent requests.
358
- self._location_mode = location_mode
359
-
360
- # Parse the total file size and adjust the download size if ranges
361
- # were specified
362
- self._file_size = parse_length_from_content_range(response.properties.content_range)
363
- if self._file_size is None:
364
- raise ValueError("Required Content-Range response header is missing or malformed.")
365
- # Remove any extra encryption data size from blob size
366
- self._file_size = adjust_blob_size_for_encryption(self._file_size, self._encryption_data)
367
-
368
- if self._end_range is not None and self._start_range is not None:
369
- # Use the length unless it is over the end of the file
370
- self.size = min(self._file_size - self._start_range, self._end_range - self._start_range + 1)
371
- elif self._start_range is not None:
372
- self.size = self._file_size - self._start_range
373
- else:
374
- self.size = self._file_size
359
+ retry_active = True
360
+ retry_total = 3
361
+ while retry_active:
362
+ try:
363
+ location_mode, response = cast(Tuple[Optional[str], Any], await self._clients.blob.download(
364
+ range=range_header,
365
+ range_get_content_md5=range_validation,
366
+ validate_content=self._validate_content,
367
+ data_stream_total=None,
368
+ download_stream_current=0,
369
+ **self._request_options
370
+ ))
375
371
 
376
- except HttpResponseError as error:
377
- if self._start_range is None and error.response and error.status_code == 416:
378
- # Get range will fail on an empty file. If the user did not
379
- # request a range, do a regular get request in order to get
380
- # any properties.
381
- try:
382
- _, response = cast(Tuple[Optional[Any], Any], await self._clients.blob.download(
383
- validate_content=self._validate_content,
384
- data_stream_total=0,
385
- download_stream_current=0,
386
- **self._request_options))
387
- except HttpResponseError as e:
388
- process_storage_error(e)
389
-
390
- # Set the download size to empty
391
- self.size = 0
392
- self._file_size = 0
393
- else:
394
- process_storage_error(error)
372
+ # Check the location we read from to ensure we use the same one
373
+ # for subsequent requests.
374
+ self._location_mode = location_mode
375
+
376
+ # Parse the total file size and adjust the download size if ranges
377
+ # were specified
378
+ self._file_size = parse_length_from_content_range(response.properties.content_range)
379
+ if self._file_size is None:
380
+ raise ValueError("Required Content-Range response header is missing or malformed.")
381
+ # Remove any extra encryption data size from blob size
382
+ self._file_size = adjust_blob_size_for_encryption(self._file_size, self._encryption_data)
383
+
384
+ if self._end_range is not None and self._start_range is not None:
385
+ # Use the length unless it is over the end of the file
386
+ self.size = min(self._file_size - self._start_range, self._end_range - self._start_range + 1)
387
+ elif self._start_range is not None:
388
+ self.size = self._file_size - self._start_range
389
+ else:
390
+ self.size = self._file_size
395
391
 
396
- if self.size == 0:
397
- self._current_content = b""
398
- else:
399
- self._current_content = await process_content(
400
- response,
401
- self._initial_offset[0],
402
- self._initial_offset[1],
403
- self._encryption_options
404
- )
392
+ except HttpResponseError as error:
393
+ if self._start_range is None and error.response and error.status_code == 416:
394
+ # Get range will fail on an empty file. If the user did not
395
+ # request a range, do a regular get request in order to get
396
+ # any properties.
397
+ try:
398
+ _, response = cast(Tuple[Optional[Any], Any], await self._clients.blob.download(
399
+ validate_content=self._validate_content,
400
+ data_stream_total=0,
401
+ download_stream_current=0,
402
+ **self._request_options))
403
+ except HttpResponseError as e:
404
+ process_storage_error(e)
405
+
406
+ # Set the download size to empty
407
+ self.size = 0
408
+ self._file_size = 0
409
+ else:
410
+ process_storage_error(error)
411
+
412
+ try:
413
+ if self.size == 0:
414
+ self._current_content = b""
415
+ else:
416
+ self._current_content = await process_content(
417
+ response,
418
+ self._initial_offset[0],
419
+ self._initial_offset[1],
420
+ self._encryption_options
421
+ )
422
+ retry_active = False
423
+ except (IncompleteReadError, HttpResponseError, DecodeError) as error:
424
+ retry_total -= 1
425
+ if retry_total <= 0:
426
+ raise HttpResponseError(error, error=error) from error
427
+ await asyncio.sleep(1)
405
428
  self._download_offset += len(self._current_content)
406
429
  self._raw_download_offset += response.content_length
407
430
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: azure-storage-blob
3
- Version: 12.22.0
3
+ Version: 12.23.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
@@ -20,12 +20,12 @@ Classifier: License :: OSI Approved :: MIT License
20
20
  Requires-Python: >=3.8
21
21
  Description-Content-Type: text/markdown
22
22
  License-File: LICENSE
23
- Requires-Dist: azure-core >=1.28.0
23
+ Requires-Dist: azure-core >=1.30.0
24
24
  Requires-Dist: cryptography >=2.1.4
25
25
  Requires-Dist: typing-extensions >=4.6.0
26
26
  Requires-Dist: isodate >=0.6.1
27
27
  Provides-Extra: aio
28
- Requires-Dist: azure-core[aio] >=1.28.0 ; extra == 'aio'
28
+ Requires-Dist: azure-core[aio] >=1.30.0 ; extra == 'aio'
29
29
 
30
30
  # Azure Storage Blobs client library for Python
31
31
  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.
@@ -3,8 +3,8 @@ azure/storage/blob/_blob_client.py,sha256=VFLd4oyTWawbxD1H7DBMfJHJcJNAUSXR-nzVxt
3
3
  azure/storage/blob/_blob_client_helpers.py,sha256=7tfQzgpV-cnwYc4i-lZEr4YibDDkyl5RCPybQtJZ-i0,51905
4
4
  azure/storage/blob/_blob_service_client.py,sha256=AKoFLHYt4pMREIeQQ3k892xs0XRfS6VV73365KLck-I,40366
5
5
  azure/storage/blob/_blob_service_client_helpers.py,sha256=8jNCrF5rsgdJyAJQTdRR_mcOYuDCw4Nt9AirZk2RYUY,997
6
- azure/storage/blob/_container_client.py,sha256=GKT43Z3PONwHZNTY026Cy4ddl1icYHLkh_QB9sPKK9g,84467
7
- azure/storage/blob/_container_client_helpers.py,sha256=Kp77eGkKgTMrFlwdOn_cQs3_jM-qipoQwqdhHRaUdJU,12359
6
+ azure/storage/blob/_container_client.py,sha256=piG3Jv1lciW3FifKp_K1trQOtCorm4TTElbq2lMyiT0,84722
7
+ azure/storage/blob/_container_client_helpers.py,sha256=7H8-506B1iDoCvvwnx3masFjiFSzL1jt5gzIhPmnafA,12596
8
8
  azure/storage/blob/_deserialize.py,sha256=VisgOi6WtpfkeOZ9lMcEAiZyg3A6AqR7oZO52WUXaWU,9937
9
9
  azure/storage/blob/_download.py,sha256=nvj_IBZuSQWV1fO2iB0n_LAndv95SRhbscuGmxu9hHE,40069
10
10
  azure/storage/blob/_encryption.py,sha256=yw1T7bw7WWSxi4utqCvbpcDTwiMBdsjw0-Eqvud_Ulc,47238
@@ -12,54 +12,53 @@ azure/storage/blob/_lease.py,sha256=ReF0nVfZE8p_clUGpebZPprBdXJ7lOGEqXmJUhvsX5U,
12
12
  azure/storage/blob/_list_blobs_helper.py,sha256=smnTcpGSVkk93G0RI7YczhkIM0s0gx4bSGWj_DB8t_s,13160
13
13
  azure/storage/blob/_models.py,sha256=c01JsL1fCAWecXfUUD6Dn50qpjV9r5ZiViXXCwNZVN4,66018
14
14
  azure/storage/blob/_quick_query_helper.py,sha256=HO6ufvSEWQSaFJ4CanujE4IN7FYB6y1f8PU0-dItMsk,6663
15
- azure/storage/blob/_serialize.py,sha256=9qby1s2BMVCs_sFOj7h4iQZNkm_jnA31BqzqhxTtI40,8128
16
- azure/storage/blob/_shared_access_signature.py,sha256=P_JnrsTIWW9oK9AHToTrqcrdBS_uRXsP1INJ5HYI6Ow,33665
15
+ azure/storage/blob/_serialize.py,sha256=5_MsQx2hVJnhNqlxP6_O7rksxEoGJXXSJSG3WIUd-iw,8146
16
+ azure/storage/blob/_shared_access_signature.py,sha256=VkoKyo5apDnKQ8wuEBp1C6MaKlqDHAZOf5wlqRcqdOA,35354
17
17
  azure/storage/blob/_upload_helpers.py,sha256=-ZpqzST-wFdWqCm_I4oWGLTMQ5N0aYb3RHxaMvmf9Q4,14688
18
- azure/storage/blob/_version.py,sha256=d6XznPdlKnX2yOS4WBXhYL6yi19aRxmSW-TneLePeV4,331
18
+ azure/storage/blob/_version.py,sha256=qk_3SN9FXGO65fpW7ymqmUkdNnMNAuvdI-ea-NvmFzw,331
19
19
  azure/storage/blob/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
20
  azure/storage/blob/_generated/__init__.py,sha256=J2H2yiFhRSsMCNKUI7gaYFIQ4_AAbWjPtzXdOsHFQFI,835
21
- azure/storage/blob/_generated/_azure_blob_storage.py,sha256=Xpt7ZrX5n2nN0l5x8EU9tX8H1ZPaK0vOV0GEFNxhYxs,5716
21
+ azure/storage/blob/_generated/_azure_blob_storage.py,sha256=VKK-9xxlF9DfNHuxlOxG6LB0XOZDLFdviW8O4W2AqeI,5737
22
22
  azure/storage/blob/_generated/_configuration.py,sha256=PV4kKjbnHhg6nD30e_acUENnsLuEKKjYRHz1VqEk9UQ,2566
23
23
  azure/storage/blob/_generated/_patch.py,sha256=MdyWs5y2w9_vYRWulELR-RV2uRYkjYpdB7nTVz2tVY4,1532
24
- azure/storage/blob/_generated/_serialization.py,sha256=UL45pN1JUtWi96uVT5L9kbXGDtWUBHW0r4e2MeHpsKY,78893
25
- azure/storage/blob/_generated/_vendor.py,sha256=e3w-rd6okoiCIB8rNMtF0fehAYFWNlshwiwTsIRkEH4,778
24
+ azure/storage/blob/_generated/_serialization.py,sha256=KsZWmQKoQbf9OUEEXmJ0UV-b9-lZRA1tCkkYt_a-4AI,78971
26
25
  azure/storage/blob/_generated/py.typed,sha256=dcrsqJrcYfTX-ckLFJMTaj6mD8aDe2u0tkQG-ZYxnEg,26
27
26
  azure/storage/blob/_generated/aio/__init__.py,sha256=J2H2yiFhRSsMCNKUI7gaYFIQ4_AAbWjPtzXdOsHFQFI,835
28
- azure/storage/blob/_generated/aio/_azure_blob_storage.py,sha256=79r9sIDwid96ZMyrO3u0S4UnfmR3O3g-M8JDmsTULXU,5859
27
+ azure/storage/blob/_generated/aio/_azure_blob_storage.py,sha256=FPnirEqJ8Nb3mWn0JPL3qb8_myyaz8UCdUQNfOW8xDs,5880
29
28
  azure/storage/blob/_generated/aio/_configuration.py,sha256=Q4jfjKwpMOvSe2gS9lOdvwwsHvVtsJZN37AYrf4ySgg,2576
30
29
  azure/storage/blob/_generated/aio/_patch.py,sha256=MdyWs5y2w9_vYRWulELR-RV2uRYkjYpdB7nTVz2tVY4,1532
31
30
  azure/storage/blob/_generated/aio/operations/__init__.py,sha256=a5HiO2T3KzSSX8reO6fCwbKcwXqd0A6GIeF4t63XmTA,1181
32
- azure/storage/blob/_generated/aio/operations/_append_blob_operations.py,sha256=vJwsxrx2W6ZJigTPIiKshqF9uEEGvBdVeczTFOShFIs,37574
33
- azure/storage/blob/_generated/aio/operations/_blob_operations.py,sha256=MAf_mMTpX5T6-wKjLcn_dgF4jiwJzW-zhzeTTKsKs94,167651
34
- azure/storage/blob/_generated/aio/operations/_block_blob_operations.py,sha256=WPYthyypwq8EfgekTQpMKMIWWd6TM-TOkqW-V4oxrY0,60953
35
- azure/storage/blob/_generated/aio/operations/_container_operations.py,sha256=fr2_IzLrRYQ3UakGkwqg4rCrhUdC9s0WJaNOrLvnO-w,91268
36
- azure/storage/blob/_generated/aio/operations/_page_blob_operations.py,sha256=_BT4F56xZ8-nkcf9h-SbDIWwExGJ4nXpBWxPikYPFiY,75443
31
+ azure/storage/blob/_generated/aio/operations/_append_blob_operations.py,sha256=FtuAMOUlqQp0fGAowxhghw7Py0jeYblsScLPMAgRn_8,37309
32
+ azure/storage/blob/_generated/aio/operations/_blob_operations.py,sha256=x6rz3T7RZNBJtOmyc0TcnOYJMOKA8TbYi8emYIbbKkE,166403
33
+ azure/storage/blob/_generated/aio/operations/_block_blob_operations.py,sha256=DUu5kWJwMfjvKHI-5SIB_Nn9_Ea8H4KctB_YtdixICk,60610
34
+ azure/storage/blob/_generated/aio/operations/_container_operations.py,sha256=8BJPTAGM1pn8gvB4jQqDq2gYxp6Pb8lzkzJ5FzC9XzY,90725
35
+ azure/storage/blob/_generated/aio/operations/_page_blob_operations.py,sha256=jp5RocDr6Lp3gQRoGnNug8sVoX_G9G7vG-658KS8Z84,74976
37
36
  azure/storage/blob/_generated/aio/operations/_patch.py,sha256=pYl0jxVFr3Yu0RHRFIgN3NwFrEZr1uL-7xbEXGgJzBw,794
38
- azure/storage/blob/_generated/aio/operations/_service_operations.py,sha256=SUJkK6dCZpVV539AHl_h0CfpKieC4qY9RJ-XcK8oFEI,36029
37
+ azure/storage/blob/_generated/aio/operations/_service_operations.py,sha256=8UAsZEKJjT1a4sulVCWZ7B2_PVhL4WSVnFpU0BIlqrs,35960
39
38
  azure/storage/blob/_generated/models/__init__.py,sha256=qOh_WzGPNB7Do1XSXfRosHQJ94zx1G5dVXpZdkNKLuM,6303
40
39
  azure/storage/blob/_generated/models/_azure_blob_storage_enums.py,sha256=o1I_SPnUKEsx2Aec-goLDw6eqZMyTVqFxg7tKpSYg0I,13049
41
40
  azure/storage/blob/_generated/models/_models_py3.py,sha256=JXhdrOvO8VKo_Vhz-cqnXI1gfDf6nkrcBDC7Cz0rL_s,110612
42
41
  azure/storage/blob/_generated/models/_patch.py,sha256=pYl0jxVFr3Yu0RHRFIgN3NwFrEZr1uL-7xbEXGgJzBw,794
43
42
  azure/storage/blob/_generated/operations/__init__.py,sha256=a5HiO2T3KzSSX8reO6fCwbKcwXqd0A6GIeF4t63XmTA,1181
44
- azure/storage/blob/_generated/operations/_append_blob_operations.py,sha256=r-BCOjTSNBma3dxqIp26wnaLDmcdADTOI6ONSimW0ew,56245
45
- azure/storage/blob/_generated/operations/_blob_operations.py,sha256=fUtRL4dxM_UMLd0TgPXRE7E3oUqNdr_400CDT-gRqrc,233836
46
- azure/storage/blob/_generated/operations/_block_blob_operations.py,sha256=PtQDvIhTiY6-MZ2aal2nKO9mCcKTYUPRToKNjbZAi4Q,91756
47
- azure/storage/blob/_generated/operations/_container_operations.py,sha256=PjPuxlFz6hO_CeaZYCO7UjuESjg2OoqhXlqZAW9iPGI,128899
48
- azure/storage/blob/_generated/operations/_page_blob_operations.py,sha256=TPUQNbsZ8GbOIizKjzc2LwclyZ4la3lRZRSk8TtViO4,112841
43
+ azure/storage/blob/_generated/operations/_append_blob_operations.py,sha256=T7Kqy8hKbPTmN7nF0M3XgKP-Pewyn0oGQ5mKTmhbnTs,55981
44
+ azure/storage/blob/_generated/operations/_blob_operations.py,sha256=AGGNddKS8creiGVfpf3mPxvP_0FvgnUV3xHMDml36xk,232577
45
+ azure/storage/blob/_generated/operations/_block_blob_operations.py,sha256=XgZ4fwZpbBrEw8ztdq7aeCKE4t7yfsGZXKkxlw72gqY,91414
46
+ azure/storage/blob/_generated/operations/_container_operations.py,sha256=XuWEdsPzEwdDeM9FpD1s6S9q5-YggBUUn848snvWCKU,128351
47
+ azure/storage/blob/_generated/operations/_page_blob_operations.py,sha256=Gj6szO76q2_3YGUNdznMz9E9UNMZKvarm4DCc5IO18o,112375
49
48
  azure/storage/blob/_generated/operations/_patch.py,sha256=pYl0jxVFr3Yu0RHRFIgN3NwFrEZr1uL-7xbEXGgJzBw,794
50
- azure/storage/blob/_generated/operations/_service_operations.py,sha256=CSR4vFYxQ5AmLlH8KcC8pJplcFDYWDwjtFQt-5MzPvc,49892
49
+ azure/storage/blob/_generated/operations/_service_operations.py,sha256=nq9AqOcEM340nLxhzaUlzta3gD0KyOZZhCI_808uYT0,49818
51
50
  azure/storage/blob/_shared/__init__.py,sha256=Ohb4NSCuB9VXGEqjU2o9VZ5L98-a7c8KWZvrujnSFk8,1477
52
51
  azure/storage/blob/_shared/authentication.py,sha256=KfUKWkjItNJxUTWNcCNusYfnENy-XbVelHlZM8fWc0Y,9450
53
- azure/storage/blob/_shared/base_client.py,sha256=m8APWNQ2cbvMFWdR6y8a1iA4h9BxSA-nQ0ovQr2tuwA,18555
52
+ azure/storage/blob/_shared/base_client.py,sha256=JJ0xwN2GGzfwB2a37TEyotxcL1WL-rvalAc1RnPWl9A,18628
54
53
  azure/storage/blob/_shared/base_client_async.py,sha256=z1dyRk2XSurRn69CwKA_lQYC7kRFOMkwhIr-InPP5t8,11918
55
54
  azure/storage/blob/_shared/constants.py,sha256=0TnhBNEaZpVq0vECmLoXWSzCajtn9WOlfOfzbMApRb4,620
56
55
  azure/storage/blob/_shared/models.py,sha256=aDydzgBj2_-WfnlT1-nOhJt-FHxOU8BG0T0K68BejNk,24907
57
56
  azure/storage/blob/_shared/parser.py,sha256=ACpdtwf6lhzmA0ukT3PmxpGVpimVXTy_mMSdixC55R8,1955
58
- azure/storage/blob/_shared/policies.py,sha256=XuoVxFgyXd2-6h-rniGlvUU4-y0SpsjMdwTdVTRSBjw,30899
59
- azure/storage/blob/_shared/policies_async.py,sha256=aVLOV8mugAI7K2rWaaBbUkXd_UCfsw9DH08gZtfLp2A,12713
57
+ azure/storage/blob/_shared/policies.py,sha256=ZesS3wGCCtDvUGXmNUKGiRlRA9wKYFeYdiElhKpHJo0,30917
58
+ azure/storage/blob/_shared/policies_async.py,sha256=Fo0zEvHU5rBSSuD55mmYroD0XCSXEx3L6STcr27kMnE,13497
60
59
  azure/storage/blob/_shared/request_handlers.py,sha256=0G9eyzMY_8BlLfHA6jbJF75ENcu3xqZ33bHfSRi9HTM,9755
61
60
  azure/storage/blob/_shared/response_handlers.py,sha256=wqZ1hGRDTwh3GkRB0gPSjgm_7TP2quZc_ex4pYThW-8,9190
62
- azure/storage/blob/_shared/shared_access_signature.py,sha256=bCtbl-TVqEMBPeqYcJB1va4mjd1rVZRuWf428zjGoss,10684
61
+ azure/storage/blob/_shared/shared_access_signature.py,sha256=ov8h9CStKwlfZBtlj54jeckpzuVjYcYvJNKgxQByZ9o,11130
63
62
  azure/storage/blob/_shared/uploads.py,sha256=O7V-gxxnBozcNscQFzH_V9ZJv6i3Y_QXJePL0g9X3Io,22157
64
63
  azure/storage/blob/_shared/uploads_async.py,sha256=ZFlwMgZIY2cYDzuhgVt0XCQV4ZtRI3PLi_A5cKTd0rw,16782
65
64
  azure/storage/blob/_shared/avro/__init__.py,sha256=Ch-mWS2_vgonM9LjVaETdaW51OL6LfG23X-0tH2AFjw,310
@@ -71,15 +70,15 @@ azure/storage/blob/_shared/avro/schema.py,sha256=Z9qcHIEBDbXxkBBs_HYbEWHlZtAbvT3
71
70
  azure/storage/blob/aio/__init__.py,sha256=tVgeGWdfxG32uyJxAE32waysCOGt93S_EeuQLJz7vEM,8344
72
71
  azure/storage/blob/aio/_blob_client_async.py,sha256=wx76W_LrUDQ2vqBbgvS3RzKLtrnXbAe2INRtLXjtu2g,180606
73
72
  azure/storage/blob/aio/_blob_service_client_async.py,sha256=3rOewtzrDmjUoYKwM0EBUwYLizqp3KHx71lEHDcN_Yw,41260
74
- azure/storage/blob/aio/_container_client_async.py,sha256=uYmMm_jWvui5EXDXeRSkbhYnVLcukiOpt_657w2cwzc,85147
75
- azure/storage/blob/aio/_download_async.py,sha256=QnOf6nZRAcYDvziAOXKSmZ9qAIs106mPTWqMks-RefA,36848
73
+ azure/storage/blob/aio/_container_client_async.py,sha256=sJaxiKPqA2iDBaDQtI4dnPIrsdmLc_aqSXPk_AJ4QME,85402
74
+ azure/storage/blob/aio/_download_async.py,sha256=zneaszZj69VblrUkWocBjvhvXedQJfJweL4uTqc9TpE,38078
76
75
  azure/storage/blob/aio/_encryption_async.py,sha256=spbWeycNMj38H5ynZ03FRtRu0L0tnl1lQn5UJT6HMAY,2518
77
76
  azure/storage/blob/aio/_lease_async.py,sha256=dy4_KZYuIhlxEvYO4GLTKdZz4UzFkpxcm7zfino6geE,18638
78
77
  azure/storage/blob/aio/_list_blobs_helper.py,sha256=cbrJcaGVfOvVCcLYd5dGx-jV3JjSvKfDIi2AQjf79qs,9920
79
78
  azure/storage/blob/aio/_models.py,sha256=fdv7OQc6utrGBIS8FSNuBhYK5Q65o1TbKvdeeQaeUOc,8143
80
79
  azure/storage/blob/aio/_upload_helpers.py,sha256=zROsVN6PK2Cn59Ysq08Ide5T1IGG2yH7oK9ZCn5uQXs,14038
81
- azure_storage_blob-12.22.0.dist-info/LICENSE,sha256=_VMkgdgo4ToLE8y1mOAjOKNhd0BnWoYu5r3BVBto6T0,1073
82
- azure_storage_blob-12.22.0.dist-info/METADATA,sha256=k00sD6WvZaLCJXQgG1H1F-EjWTrO910zIpM6YNeWP_w,26252
83
- azure_storage_blob-12.22.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
84
- azure_storage_blob-12.22.0.dist-info/top_level.txt,sha256=S7DhWV9m80TBzAhOFjxDUiNbKszzoThbnrSz5MpbHSQ,6
85
- azure_storage_blob-12.22.0.dist-info/RECORD,,
80
+ azure_storage_blob-12.23.0.dist-info/LICENSE,sha256=_VMkgdgo4ToLE8y1mOAjOKNhd0BnWoYu5r3BVBto6T0,1073
81
+ azure_storage_blob-12.23.0.dist-info/METADATA,sha256=xuw3F1eB7EGqb8Wjkm8v99XZp1_3LvtdOHYJM4oObJs,26252
82
+ azure_storage_blob-12.23.0.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
83
+ azure_storage_blob-12.23.0.dist-info/top_level.txt,sha256=S7DhWV9m80TBzAhOFjxDUiNbKszzoThbnrSz5MpbHSQ,6
84
+ azure_storage_blob-12.23.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.43.0)
2
+ Generator: setuptools (72.2.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,16 +0,0 @@
1
- # --------------------------------------------------------------------------
2
- # Copyright (c) Microsoft Corporation. All rights reserved.
3
- # Licensed under the MIT License. See License.txt in the project root for license information.
4
- # Code generated by Microsoft (R) AutoRest Code Generator.
5
- # Changes may cause incorrect behavior and will be lost if the code is regenerated.
6
- # --------------------------------------------------------------------------
7
-
8
- from azure.core.pipeline.transport import HttpRequest
9
-
10
-
11
- def _convert_request(request, files=None):
12
- data = request.content if not files else None
13
- request = HttpRequest(method=request.method, url=request.url, headers=request.headers, data=data)
14
- if files:
15
- request.set_formdata_body(files)
16
- return request