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.
- azure/storage/blob/_blob_client.py +29 -6
- azure/storage/blob/_container_client.py +2 -2
- azure/storage/blob/_encryption.py +31 -6
- azure/storage/blob/_models.py +1 -0
- azure/storage/blob/_shared/avro/schema.py +0 -2
- azure/storage/blob/_shared/base_client.py +7 -3
- azure/storage/blob/_shared/models.py +3 -0
- azure/storage/blob/_version.py +1 -1
- azure/storage/blob/aio/_blob_client_async.py +5 -3
- azure/storage/blob/aio/_container_client_async.py +3 -3
- azure/storage/blob/aio/_download_async.py +1 -1
- {azure_storage_blob-12.18.0b1.dist-info → azure_storage_blob-12.18.1.dist-info}/METADATA +3 -2
- {azure_storage_blob-12.18.0b1.dist-info → azure_storage_blob-12.18.1.dist-info}/RECORD +16 -16
- {azure_storage_blob-12.18.0b1.dist-info → azure_storage_blob-12.18.1.dist-info}/WHEEL +1 -1
- {azure_storage_blob-12.18.0b1.dist-info → azure_storage_blob-12.18.1.dist-info}/LICENSE +0 -0
- {azure_storage_blob-12.18.0b1.dist-info → azure_storage_blob-12.18.1.dist-info}/top_level.txt +0 -0
@@ -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,
|
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
|
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
|
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
|
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
|
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
|
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
|
-
|
258
|
-
return nonce +
|
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
|
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
|
-
|
931
|
-
encrypted_data = nonce +
|
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.")
|
azure/storage/blob/_models.py
CHANGED
@@ -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.
|
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
|
|
azure/storage/blob/_version.py
CHANGED
@@ -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
|
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
|
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
|
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
|
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
|
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
|
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.
|
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
|
-
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
71
|
-
azure/storage/blob/aio/_download_async.py,sha256=
|
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.
|
77
|
-
azure_storage_blob-12.18.
|
78
|
-
azure_storage_blob-12.18.
|
79
|
-
azure_storage_blob-12.18.
|
80
|
-
azure_storage_blob-12.18.
|
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,,
|
File without changes
|
{azure_storage_blob-12.18.0b1.dist-info → azure_storage_blob-12.18.1.dist-info}/top_level.txt
RENAMED
File without changes
|