azure-storage-blob 12.18.0b1__py3-none-any.whl → 12.18.1__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.
@@ -25,7 +25,9 @@ from ._shared.base_client import StorageAccountHostsMixin, parse_connection_str,
25
25
  from ._shared.uploads import IterStreamer
26
26
  from ._shared.uploads_async import AsyncIterStreamer
27
27
  from ._shared.request_handlers import (
28
- add_metadata_headers, get_length, read_length,
28
+ add_metadata_headers,
29
+ get_length,
30
+ read_length,
29
31
  validate_and_format_range_headers)
30
32
  from ._shared.response_handlers import return_response_headers, process_storage_error, return_headers_and_deserialized
31
33
  from ._generated import AzureBlobStorage
@@ -55,7 +57,7 @@ from ._deserialize import (
55
57
  deserialize_pipeline_response_into_cls
56
58
  )
57
59
  from ._download import StorageStreamDownloader
58
- from ._encryption import StorageEncryptionMixin
60
+ from ._encryption import modify_user_agent_for_encryption, StorageEncryptionMixin
59
61
  from ._lease import BlobLeaseClient
60
62
  from ._models import BlobType, BlobBlock, BlobProperties, BlobQueryError, QuickQueryDialect, \
61
63
  DelimitedJsonDialect, DelimitedTextDialect, PageRangePaged, PageRange
@@ -237,6 +239,8 @@ class BlobClient(StorageAccountHostsMixin, StorageEncryptionMixin): # pylint: d
237
239
  The optional blob snapshot on which to operate. This can be the snapshot ID string
238
240
  or the response returned from :func:`create_snapshot`. If specified, this will override
239
241
  the snapshot in the url.
242
+ :keyword str version_id: The version id parameter is an opaque DateTime value that, when present,
243
+ specifies the version of the blob to operate on.
240
244
  :returns: A Blob client.
241
245
  :rtype: ~azure.storage.blob.BlobClient
242
246
  """
@@ -317,6 +321,8 @@ class BlobClient(StorageAccountHostsMixin, StorageEncryptionMixin): # pylint: d
317
321
  If using an instance of AzureNamedKeyCredential, "name" should be the storage account name, and "key"
318
322
  should be the storage account key.
319
323
  :type credential: Optional[Union[str, Dict[str, str], "AzureNamedKeyCredential", "AzureSasCredential", "TokenCredential"]] # pylint: disable=line-too-long
324
+ :keyword str version_id: The version id parameter is an opaque DateTime value that, when present,
325
+ specifies the version of the blob to operate on.
320
326
  :returns: A Blob client.
321
327
  :rtype: ~azure.storage.blob.BlobClient
322
328
 
@@ -424,6 +430,13 @@ class BlobClient(StorageAccountHostsMixin, StorageEncryptionMixin): # pylint: d
424
430
  kwargs['blob_settings'] = self._config
425
431
  kwargs['max_concurrency'] = max_concurrency
426
432
  kwargs['encryption_options'] = encryption_options
433
+ # Add feature flag to user agent for encryption
434
+ if self.key_encryption_key:
435
+ modify_user_agent_for_encryption(
436
+ self._config.user_agent_policy.user_agent,
437
+ self._sdk_moniker,
438
+ self.encryption_version,
439
+ kwargs)
427
440
 
428
441
  if blob_type == BlobType.BlockBlob:
429
442
  kwargs['client'] = self._client.block_blob
@@ -711,7 +724,7 @@ class BlobClient(StorageAccountHostsMixin, StorageEncryptionMixin): # pylint: d
711
724
  Defaults to UTF-8.
712
725
  :keyword progress_hook:
713
726
  A callback to track the progress of a long running upload. The signature is
714
- function(current: int, total: Optional[int]) where current is the number of bytes transfered
727
+ function(current: int, total: Optional[int]) where current is the number of bytes transferred
715
728
  so far, and total is the size of the blob or None if the size is unknown.
716
729
  :paramtype progress_hook: Callable[[int, Optional[int]], None]
717
730
  :keyword int timeout:
@@ -747,7 +760,7 @@ class BlobClient(StorageAccountHostsMixin, StorageEncryptionMixin): # pylint: d
747
760
 
748
761
  def _download_blob_options(self, offset=None, length=None, encoding=None, **kwargs):
749
762
  # type: (Optional[int], Optional[int], Optional[str], **Any) -> Dict[str, Any]
750
- if self.require_encryption and not self.key_encryption_key:
763
+ if self.require_encryption and not (self.key_encryption_key or self.key_resolver_function):
751
764
  raise ValueError("Encryption required but no key was provided.")
752
765
  if length is not None and offset is None:
753
766
  raise ValueError("Offset value must not be None if length is set.")
@@ -767,6 +780,14 @@ class BlobClient(StorageAccountHostsMixin, StorageEncryptionMixin): # pylint: d
767
780
  cpk_info = CpkInfo(encryption_key=cpk.key_value, encryption_key_sha256=cpk.key_hash,
768
781
  encryption_algorithm=cpk.algorithm)
769
782
 
783
+ # Add feature flag to user agent for encryption
784
+ if self.key_encryption_key or self.key_resolver_function:
785
+ modify_user_agent_for_encryption(
786
+ self._config.user_agent_policy.user_agent,
787
+ self._sdk_moniker,
788
+ self.encryption_version,
789
+ kwargs)
790
+
770
791
  options = {
771
792
  'clients': self._client,
772
793
  'config': self._config,
@@ -880,7 +901,7 @@ class BlobClient(StorageAccountHostsMixin, StorageEncryptionMixin): # pylint: d
880
901
  Encoding to decode the downloaded bytes. Default is None, i.e. no decoding.
881
902
  :keyword progress_hook:
882
903
  A callback to track the progress of a long running download. The signature is
883
- function(current: int, total: int) where current is the number of bytes transfered
904
+ function(current: int, total: int) where current is the number of bytes transferred
884
905
  so far, and total is the total size of the download.
885
906
  :paramtype progress_hook: Callable[[int, int], None]
886
907
  :keyword int timeout:
@@ -1796,7 +1817,9 @@ class BlobClient(StorageAccountHostsMixin, StorageEncryptionMixin): # pylint: d
1796
1817
  @distributed_trace
1797
1818
  def create_append_blob(self, content_settings=None, metadata=None, **kwargs):
1798
1819
  # type: (Optional[ContentSettings], Optional[Dict[str, str]], **Any) -> Dict[str, Union[str, datetime]]
1799
- """Creates a new Append Blob.
1820
+ """Creates a new Append Blob. This operation creates a new 0-length append blob. The content
1821
+ of any existing blob is overwritten with the newly initialized append blob. To add content to
1822
+ the append blob, call the :func:`append_block` or :func:`append_block_from_url` method.
1800
1823
 
1801
1824
  :param ~azure.storage.blob.ContentSettings content_settings:
1802
1825
  ContentSettings object used to set blob properties. Used to set content type, encoding,
@@ -1064,7 +1064,7 @@ class ContainerClient(StorageAccountHostsMixin, StorageEncryptionMixin): # py
1064
1064
  Defaults to UTF-8.
1065
1065
  :keyword progress_hook:
1066
1066
  A callback to track the progress of a long running upload. The signature is
1067
- function(current: int, total: Optional[int]) where current is the number of bytes transfered
1067
+ function(current: int, total: Optional[int]) where current is the number of bytes transferred
1068
1068
  so far, and total is the size of the blob or None if the size is unknown.
1069
1069
  :paramtype progress_hook: Callable[[int, Optional[int]], None]
1070
1070
  :returns: A BlobClient to interact with the newly uploaded blob.
@@ -1267,7 +1267,7 @@ class ContainerClient(StorageAccountHostsMixin, StorageEncryptionMixin): # py
1267
1267
  Encoding to decode the downloaded bytes. Default is None, i.e. no decoding.
1268
1268
  :keyword progress_hook:
1269
1269
  A callback to track the progress of a long running download. The signature is
1270
- function(current: int, total: int) where current is the number of bytes transfered
1270
+ function(current: int, total: int) where current is the number of bytes transferred
1271
1271
  so far, and total is the total size of the download.
1272
1272
  :paramtype progress_hook: Callable[[int, int], None]
1273
1273
  :keyword int timeout:
@@ -1,3 +1,4 @@
1
+ # pylint: disable=too-many-lines
1
2
  # -------------------------------------------------------------------------
2
3
  # Copyright (c) Microsoft Corporation. All rights reserved.
3
4
  # Licensed under the MIT License. See License.txt in the project root for
@@ -147,7 +148,7 @@ class _EncryptionData:
147
148
  The content encryption initialization vector.
148
149
  Required for AES-CBC (V1).
149
150
  :param Optional[_EncryptedRegionInfo] encrypted_region_info:
150
- The info about the autenticated block sizes.
151
+ The info about the authenticated block sizes.
151
152
  Required for AES-GCM (V2).
152
153
  :param _EncryptionAgent encryption_agent:
153
154
  The encryption agent.
@@ -254,8 +255,8 @@ class GCMBlobEncryptionStream:
254
255
  aesgcm = AESGCM(self.content_encryption_key)
255
256
 
256
257
  # Returns ciphertext + tag
257
- cipertext_with_tag = aesgcm.encrypt(nonce, data, None)
258
- return nonce + cipertext_with_tag
258
+ ciphertext_with_tag = aesgcm.encrypt(nonce, data, None)
259
+ return nonce + ciphertext_with_tag
259
260
 
260
261
 
261
262
  def is_encryption_v2(encryption_data: Optional[_EncryptionData]) -> bool:
@@ -270,6 +271,30 @@ def is_encryption_v2(encryption_data: Optional[_EncryptionData]) -> bool:
270
271
  return encryption_data and encryption_data.encryption_agent.protocol == _ENCRYPTION_PROTOCOL_V2
271
272
 
272
273
 
274
+ def modify_user_agent_for_encryption(
275
+ user_agent: str,
276
+ moniker: str,
277
+ encryption_version: str,
278
+ request_options: Dict[str, Any]
279
+ ) -> None:
280
+ """
281
+ Modifies the request options to contain a user agent string updated with encryption information.
282
+ Adds azstorage-clientsideencryption/<version> immediately proceeding the SDK descriptor.
283
+
284
+ :param str user_agent: The existing User Agent to modify.
285
+ :param str moniker: The specific SDK moniker. The modification will immediately proceed azsdk-python-{moniker}.
286
+ :param str encryption_version: The version of encryption being used.
287
+ :param Dict[str, Any] request_options: The reuqest options to add the user agent override to.
288
+ """
289
+ feature_flag = f"azstorage-clientsideencryption/{encryption_version}"
290
+ if feature_flag not in user_agent:
291
+ index = user_agent.find(f"azsdk-python-{moniker}")
292
+ user_agent = f"{user_agent[:index]}{feature_flag} {user_agent[index:]}"
293
+
294
+ request_options['user_agent'] = user_agent
295
+ request_options['user_agent_overwrite'] = True
296
+
297
+
273
298
  def get_adjusted_upload_size(length: int, encryption_version: str) -> int:
274
299
  """
275
300
  Get the adjusted size of the blob upload which accounts for
@@ -883,7 +908,7 @@ def encrypt_queue_message(message, key_encryption_key, version):
883
908
  Returns a json-formatted string containing the encrypted message and the encryption metadata.
884
909
 
885
910
  :param object message:
886
- The plain text messge to be encrypted.
911
+ The plain text message to be encrypted.
887
912
  :param object key_encryption_key:
888
913
  The user-provided key-encryption-key. Must implement the following methods:
889
914
  wrap_key(key)--wraps the specified key using an algorithm of the user's choice.
@@ -927,8 +952,8 @@ def encrypt_queue_message(message, key_encryption_key, version):
927
952
  aesgcm = AESGCM(content_encryption_key)
928
953
 
929
954
  # Returns ciphertext + tag
930
- cipertext_with_tag = aesgcm.encrypt(nonce, message, None)
931
- encrypted_data = nonce + cipertext_with_tag
955
+ ciphertext_with_tag = aesgcm.encrypt(nonce, message, None)
956
+ encrypted_data = nonce + ciphertext_with_tag
932
957
 
933
958
  else:
934
959
  raise ValueError("Invalid encryption version specified.")
@@ -96,6 +96,7 @@ class PremiumPageBlobTier(str, Enum, metaclass=CaseInsensitiveEnumMeta):
96
96
  P4 = 'P4' #: P4 Tier
97
97
  P6 = 'P6' #: P6 Tier
98
98
  P10 = 'P10' #: P10 Tier
99
+ P15 = 'P15' #: P15 Tier
99
100
  P20 = 'P20' #: P20 Tier
100
101
  P30 = 'P30' #: P30 Tier
101
102
  P40 = 'P40' #: P40 Tier
@@ -29,8 +29,6 @@ import abc
29
29
  import json
30
30
  import logging
31
31
  import re
32
-
33
-
34
32
  logger = logging.getLogger(__name__)
35
33
 
36
34
  # ------------------------------------------------------------------------------
@@ -106,7 +106,8 @@ class StorageAccountHostsMixin(object): # pylint: disable=too-many-instance-att
106
106
  primary_hostname = (parsed_url.netloc + parsed_url.path).rstrip('/')
107
107
  self._hosts = {LocationMode.PRIMARY: primary_hostname, LocationMode.SECONDARY: secondary_hostname}
108
108
 
109
- self._config, self._pipeline = self._create_pipeline(self.credential, storage_sdk=service, **kwargs)
109
+ self._sdk_moniker = f"storage-{service}/{VERSION}"
110
+ self._config, self._pipeline = self._create_pipeline(self.credential, sdk_moniker=self._sdk_moniker, **kwargs)
110
111
 
111
112
  def __enter__(self):
112
113
  self._client.__enter__()
@@ -318,6 +319,7 @@ class StorageAccountHostsMixin(object): # pylint: disable=too-many-instance-att
318
319
  except HttpResponseError as error:
319
320
  process_storage_error(error)
320
321
 
322
+
321
323
  class TransportWrapper(HttpTransport):
322
324
  """Wrapper class that ensures that an inner client created
323
325
  by a `get_client` method does not close the outer transport for the parent
@@ -408,10 +410,12 @@ def parse_connection_str(conn_str, credential, service):
408
410
 
409
411
  def create_configuration(**kwargs):
410
412
  # type: (**Any) -> Configuration
413
+ # Backwards compatibility if someone is not passing sdk_moniker
414
+ if not kwargs.get("sdk_moniker"):
415
+ kwargs["sdk_moniker"] = f"storage-{kwargs.pop('storage_sdk')}/{VERSION}"
411
416
  config = Configuration(**kwargs)
412
417
  config.headers_policy = StorageHeadersPolicy(**kwargs)
413
- config.user_agent_policy = UserAgentPolicy(
414
- sdk_moniker=f"storage-{kwargs.pop('storage_sdk')}/{VERSION}", **kwargs)
418
+ config.user_agent_policy = UserAgentPolicy(**kwargs)
415
419
  config.retry_policy = kwargs.get("retry_policy") or ExponentialRetry(**kwargs)
416
420
  config.logging_policy = StorageLoggingPolicy(**kwargs)
417
421
  config.proxy_policy = ProxyPolicy(**kwargs)
@@ -218,6 +218,9 @@ class DictMixin(object):
218
218
  def __str__(self):
219
219
  return str({k: v for k, v in self.__dict__.items() if not k.startswith('_')})
220
220
 
221
+ def __contains__(self, key):
222
+ return key in self.__dict__
223
+
221
224
  def has_key(self, k):
222
225
  return k in self.__dict__
223
226
 
@@ -4,4 +4,4 @@
4
4
  # license information.
5
5
  # --------------------------------------------------------------------------
6
6
 
7
- VERSION = "12.18.0b1"
7
+ VERSION = "12.18.1"
@@ -382,7 +382,7 @@ class BlobClient(AsyncStorageAccountHostsMixin, BlobClientBase, StorageEncryptio
382
382
  Defaults to UTF-8.
383
383
  :keyword progress_hook:
384
384
  An async callback to track the progress of a long running upload. The signature is
385
- function(current: int, total: Optional[int]) where current is the number of bytes transfered
385
+ function(current: int, total: Optional[int]) where current is the number of bytes transferred
386
386
  so far, and total is the size of the blob or None if the size is unknown.
387
387
  :paramtype progress_hook: Callable[[int, Optional[int]], Awaitable[None]]
388
388
  :keyword int timeout:
@@ -508,7 +508,7 @@ class BlobClient(AsyncStorageAccountHostsMixin, BlobClientBase, StorageEncryptio
508
508
  Encoding to decode the downloaded bytes. Default is None, i.e. no decoding.
509
509
  :keyword progress_hook:
510
510
  An async callback to track the progress of a long running download. The signature is
511
- function(current: int, total: int) where current is the number of bytes transfered
511
+ function(current: int, total: int) where current is the number of bytes transferred
512
512
  so far, and total is the total size of the download.
513
513
  :paramtype progress_hook: Callable[[int, int], Awaitable[None]]
514
514
  :keyword int timeout:
@@ -1075,7 +1075,9 @@ class BlobClient(AsyncStorageAccountHostsMixin, BlobClientBase, StorageEncryptio
1075
1075
  @distributed_trace_async
1076
1076
  async def create_append_blob(self, content_settings=None, metadata=None, **kwargs):
1077
1077
  # type: (Optional[ContentSettings], Optional[Dict[str, str]], Any) -> Dict[str, Union[str, datetime]]
1078
- """Creates a new Append Blob.
1078
+ """Creates a new Append Blob. This operation creates a new 0-length append blob. The content
1079
+ of any existing blob is overwritten with the newly initialized append blob. To add content to
1080
+ the append blob, call the :func:`append_block` or :func:`append_block_from_url` method.
1079
1081
 
1080
1082
  :param ~azure.storage.blob.ContentSettings content_settings:
1081
1083
  ContentSettings object used to set blob properties. Used to set content type, encoding,
@@ -931,7 +931,7 @@ class ContainerClient(AsyncStorageAccountHostsMixin, ContainerClientBase, Storag
931
931
  Defaults to UTF-8.
932
932
  :keyword progress_hook:
933
933
  An async callback to track the progress of a long running upload. The signature is
934
- function(current: int, total: Optional[int]) where current is the number of bytes transfered
934
+ function(current: int, total: Optional[int]) where current is the number of bytes transferred
935
935
  so far, and total is the size of the blob or None if the size is unknown.
936
936
  :paramtype progress_hook: Callable[[int, Optional[int]], Awaitable[None]]
937
937
  :returns: A BlobClient to interact with the newly uploaded blob.
@@ -1134,7 +1134,7 @@ class ContainerClient(AsyncStorageAccountHostsMixin, ContainerClientBase, Storag
1134
1134
  Encoding to decode the downloaded bytes. Default is None, i.e. no decoding.
1135
1135
  :keyword progress_hook:
1136
1136
  An async callback to track the progress of a long running download. The signature is
1137
- function(current: int, total: int) where current is the number of bytes transfered
1137
+ function(current: int, total: int) where current is the number of bytes transferred
1138
1138
  so far, and total is the total size of the download.
1139
1139
  :paramtype progress_hook: Callable[[int, int], Awaitable[None]]
1140
1140
  :keyword int timeout:
@@ -1187,7 +1187,7 @@ class ContainerClient(AsyncStorageAccountHostsMixin, ContainerClientBase, Storag
1187
1187
  key: 'name', value type: str
1188
1188
  snapshot you want to delete:
1189
1189
  key: 'snapshot', value type: str
1190
- whether to delete snapthots when deleting blob:
1190
+ whether to delete snapshots when deleting blob:
1191
1191
  key: 'delete_snapshots', value: 'include' or 'only'
1192
1192
  if the blob modified or not:
1193
1193
  key: 'if_modified_since', 'if_unmodified_since', value type: datetime
@@ -193,7 +193,7 @@ class StorageStreamDownloader(Generic[T]): # pylint: disable=too-many-instance-
193
193
  The properties of the blob being downloaded. If only a range of the data is being
194
194
  downloaded, this will be reflected in the properties.
195
195
  :ivar int size:
196
- The size of the total data in the stream. This will be the byte range if speficied,
196
+ The size of the total data in the stream. This will be the byte range if specified,
197
197
  otherwise the total size of the blob.
198
198
  """
199
199
 
@@ -1,12 +1,13 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: azure-storage-blob
3
- Version: 12.18.0b1
3
+ Version: 12.18.1
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
7
7
  Author-email: ascl@microsoft.com
8
8
  License: MIT License
9
- Classifier: Development Status :: 4 - Beta
9
+ Keywords: azure,azure sdk
10
+ Classifier: Development Status :: 5 - Production/Stable
10
11
  Classifier: Programming Language :: Python
11
12
  Classifier: Programming Language :: Python :: 3 :: Only
12
13
  Classifier: Programming Language :: Python :: 3
@@ -1,18 +1,18 @@
1
1
  azure/storage/blob/__init__.py,sha256=sDTaFCWfRO7YvOXyOCqyA20geR5Qc_8BSjF3PyZC3qU,10363
2
- azure/storage/blob/_blob_client.py,sha256=4AytOZuzc0iO6PHi81sP3qvzHJiDFAuHpXZidDwC1yg,233950
2
+ azure/storage/blob/_blob_client.py,sha256=FBz13riW3wG4-z5SzPG3ZuVFBT49pRDj64TgL-ns5SM,235246
3
3
  azure/storage/blob/_blob_service_client.py,sha256=5zuPmAdLGW0Eia5EjFdCMn92eeHZZ5yxGD9gVQzc8DA,40171
4
- azure/storage/blob/_container_client.py,sha256=64zYkO3Z4Y6kb13Eibz4suiO0koUjse2iuT2fx3CzDA,93322
4
+ azure/storage/blob/_container_client.py,sha256=Vd5W5HeTFN5ob2Nk6fg8A3kbCCqoYxD2ArpeomUT274,93324
5
5
  azure/storage/blob/_deserialize.py,sha256=HwoxR0gZmCPAHOGuVH_Zf5Zd4bPlPnEFT9Tcm2R4DJU,8876
6
6
  azure/storage/blob/_download.py,sha256=RwORtC1Y41dcCXfqvmWiGVrNpTa9fKXZmfDkuj1ov18,32373
7
- azure/storage/blob/_encryption.py,sha256=G0IdXIF_OCq1A0CrAbov_sOUPtz5RU0eUF-okZ0t7mc,41596
7
+ azure/storage/blob/_encryption.py,sha256=Nj7Uq-lqxTzAAgC5l4SqNMMLmikblnIHSXlYWxURL00,42729
8
8
  azure/storage/blob/_lease.py,sha256=4l_Y0WVwc7RyUjfRHFbVvtbdBcPchjnlZJDmcj6BANY,18749
9
9
  azure/storage/blob/_list_blobs_helper.py,sha256=ccWZaWHPiSKxlnEyd6Qe-caVVFmYSrd7u-YO6Tv4PHI,14791
10
- azure/storage/blob/_models.py,sha256=uBkgvsPpo76efmwnJF4wBbVTfB5McInPbgpCCkggIYQ,56983
10
+ azure/storage/blob/_models.py,sha256=ejDwLc05_loYsvzjErFc1Ebcz2USv5j30HTagze6rgE,57012
11
11
  azure/storage/blob/_quick_query_helper.py,sha256=D5TlBTUVf5C8NxQjG4B5hdyHCPcQDkp27qyIonqZPE0,6369
12
12
  azure/storage/blob/_serialize.py,sha256=ChDWAEJ8FvIuSATPb0qQX2WFSQHbeyMEyoQNY91QPNk,8077
13
13
  azure/storage/blob/_shared_access_signature.py,sha256=EwR3OHuwE2jFGNK8BSRItBk5RXgP-bbm8Ga92iWAysc,32897
14
14
  azure/storage/blob/_upload_helpers.py,sha256=mLLm-k5yefa_7IkyiSAS1D1sh0DgZirO4AezvgkgRgg,13932
15
- azure/storage/blob/_version.py,sha256=oFQu3BEAM8mFdK5P0XN1D9DnFbkCBynwKBDSpcoanno,333
15
+ azure/storage/blob/_version.py,sha256=40e-Qd0BS5wnrkgRy4fSRSzkSEykwAwVUUM24AeCFKI,331
16
16
  azure/storage/blob/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
17
  azure/storage/blob/_generated/__init__.py,sha256=J2H2yiFhRSsMCNKUI7gaYFIQ4_AAbWjPtzXdOsHFQFI,835
18
18
  azure/storage/blob/_generated/_azure_blob_storage.py,sha256=hiHiNSJj3bbXvke7eYn3CCAgXIhMQUt_QhmXCM8yVnc,4804
@@ -46,10 +46,10 @@ azure/storage/blob/_generated/operations/_patch.py,sha256=1SvcsuOv1jiGgnGbfnBlSv
46
46
  azure/storage/blob/_generated/operations/_service_operations.py,sha256=COKPwNmcvmoAI_Rem1_ynp34dBOKnBhijIZQ0sW3a9M,52096
47
47
  azure/storage/blob/_shared/__init__.py,sha256=Ohb4NSCuB9VXGEqjU2o9VZ5L98-a7c8KWZvrujnSFk8,1477
48
48
  azure/storage/blob/_shared/authentication.py,sha256=Bgl4lWePRiXA2Dx5Qf0CUSFb7UQ7_vzM9gisWxsptR8,7187
49
- azure/storage/blob/_shared/base_client.py,sha256=lF0uogL6DB9MxUeHmWB63i1yBH_Cp_mVWoBde90Oo4o,17966
49
+ azure/storage/blob/_shared/base_client.py,sha256=dkH5FliWnfzpecX0_l0Z8s57zM_PiNnkR1rxZ4ktGBc,18152
50
50
  azure/storage/blob/_shared/base_client_async.py,sha256=vD_dzj3jmSLUiYBYx6AdMbyBzAJdA7xVIk9MOb6-tHs,7035
51
51
  azure/storage/blob/_shared/constants.py,sha256=0TnhBNEaZpVq0vECmLoXWSzCajtn9WOlfOfzbMApRb4,620
52
- azure/storage/blob/_shared/models.py,sha256=V8FYwIonajvRwHoqeAvsEP6_9EicBGchVXBEwWrjDBg,21013
52
+ azure/storage/blob/_shared/models.py,sha256=cBt-61Ifk2-GPdIb6Z4UdV2SNLahguQyFgPJAYPzmzA,21083
53
53
  azure/storage/blob/_shared/parser.py,sha256=0lDtA9jtfN4Skj41dAjOSX1FEKFeRwNmdnWqwh1NAMQ,1875
54
54
  azure/storage/blob/_shared/policies.py,sha256=ibYz2uiaAa9w6yYgAxyfI-UBXfv3laMHfkOKZ19ItKM,29648
55
55
  azure/storage/blob/_shared/policies_async.py,sha256=lKAtEaP2JEi5nhGa8EJWKfRU3cVAOkDqvk10s13GMtI,11742
@@ -63,18 +63,18 @@ azure/storage/blob/_shared/avro/avro_io.py,sha256=vKcmSZE_dnKHTBP9gaANEsvw0mNmAA
63
63
  azure/storage/blob/_shared/avro/avro_io_async.py,sha256=SVGg6MObwkfclwcETpLAt_sN1L3ZqYzl7gPkGzau82Y,16353
64
64
  azure/storage/blob/_shared/avro/datafile.py,sha256=kW92_jqKSJBXLsDkW9nex9X_to1lHI3d9vYvC70bP1o,8535
65
65
  azure/storage/blob/_shared/avro/datafile_async.py,sha256=jbf50A1yzJCHZS1-eoKzQW5KdzJ9uQGhlOi8QoKuRb8,7368
66
- azure/storage/blob/_shared/avro/schema.py,sha256=HsAHQQ7yJ8me-NZo8yh0TEmhM6QG-LNKnORRU5Q6KhM,36287
66
+ azure/storage/blob/_shared/avro/schema.py,sha256=QJDiJRsUpPi92a4Ph4JtCeB6pbigI8qsvIlTuSPci78,36285
67
67
  azure/storage/blob/aio/__init__.py,sha256=jLt4Iw2zIGyfyTXpN7SXfxDmxq-OhdEFF_YElWLDACQ,7922
68
- azure/storage/blob/aio/_blob_client_async.py,sha256=zfpNTJtwfEgr1Sn0yA2xud1gbAqNHgLnqqAleEuM5og,166116
68
+ azure/storage/blob/aio/_blob_client_async.py,sha256=tAb5rTt6MQjrKaFkRcaUHkQrJH10GzzVmgaEYPc6wjY,166379
69
69
  azure/storage/blob/aio/_blob_service_client_async.py,sha256=RCxUNbFVtB7pCPRoFQaPhDzTaLE398q1FA2ljBkIkPY,37691
70
- azure/storage/blob/aio/_container_client_async.py,sha256=p71TqIpyNNsIMM3aReBiLHt-HH_HdwrHz4A3iiJM0sY,76299
71
- azure/storage/blob/aio/_download_async.py,sha256=DmKE1q4zjFumLCcaKNNrH65NIuC9BWKPQBuEVHd2H1M,29366
70
+ azure/storage/blob/aio/_container_client_async.py,sha256=1tEKkFoIs7xJfo2gFJNxb6TyRhQyYIvHI7WDPH0crPA,76301
71
+ azure/storage/blob/aio/_download_async.py,sha256=F3vkyuMeBZ7fXZIbqsYCzzp9IhJ7xF1NLjJ8c0OlVaE,29366
72
72
  azure/storage/blob/aio/_lease_async.py,sha256=ZBNV868_FFEY2zyJ-gl_wVBxkXNh6PalRWR0PwzLXuQ,18437
73
73
  azure/storage/blob/aio/_list_blobs_helper.py,sha256=JXrgZb2R3JhNO4P58kzpruRF52nek4JmAixfyaQQNYA,11269
74
74
  azure/storage/blob/aio/_models.py,sha256=k9vJ9GNp1IKfcSBwL1kj8aXq3gm_RYgRtK7_yJm-MTU,7684
75
75
  azure/storage/blob/aio/_upload_helpers.py,sha256=K_srGMkhxm7wU8C309QHLRFoZXR6Qt6LS9v9T3pGMdQ,13135
76
- azure_storage_blob-12.18.0b1.dist-info/LICENSE,sha256=_VMkgdgo4ToLE8y1mOAjOKNhd0BnWoYu5r3BVBto6T0,1073
77
- azure_storage_blob-12.18.0b1.dist-info/METADATA,sha256=MZdgxDyNoCgTWC31SULGASunz-YCsGokFUJz8K2PjRs,26172
78
- azure_storage_blob-12.18.0b1.dist-info/WHEEL,sha256=5sUXSg9e4bi7lTLOHcm6QEYwO5TIF1TNbTSVFVjcJcc,92
79
- azure_storage_blob-12.18.0b1.dist-info/top_level.txt,sha256=S7DhWV9m80TBzAhOFjxDUiNbKszzoThbnrSz5MpbHSQ,6
80
- azure_storage_blob-12.18.0b1.dist-info/RECORD,,
76
+ azure_storage_blob-12.18.1.dist-info/LICENSE,sha256=_VMkgdgo4ToLE8y1mOAjOKNhd0BnWoYu5r3BVBto6T0,1073
77
+ azure_storage_blob-12.18.1.dist-info/METADATA,sha256=16G4gQQda0frOz4y4JbEFL97HNwx6KfhCUs5Ah_AKxg,26209
78
+ azure_storage_blob-12.18.1.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
79
+ azure_storage_blob-12.18.1.dist-info/top_level.txt,sha256=S7DhWV9m80TBzAhOFjxDUiNbKszzoThbnrSz5MpbHSQ,6
80
+ azure_storage_blob-12.18.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.41.1)
2
+ Generator: bdist_wheel (0.41.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5