azure-storage-blob 12.25.0b1__tar.gz → 12.25.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/CHANGELOG.md +10 -0
- {azure_storage_blob-12.25.0b1/azure_storage_blob.egg-info → azure_storage_blob-12.25.1}/PKG-INFO +2 -2
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_shared/avro/avro_io.py +2 -2
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_shared/avro/avro_io_async.py +1 -1
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_shared/base_client.py +5 -2
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_shared/policies_async.py +1 -1
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_shared/request_handlers.py +1 -2
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_shared/uploads_async.py +2 -3
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_version.py +1 -1
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/aio/_download_async.py +1 -1
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1/azure_storage_blob.egg-info}/PKG-INFO +2 -2
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/setup.py +1 -1
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_common_blob.py +54 -0
- azure_storage_blob-12.25.1/tests/test_helpers.py +153 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_helpers_async.py +11 -12
- azure_storage_blob-12.25.0b1/tests/test_helpers.py +0 -42
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/LICENSE +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/MANIFEST.in +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/README.md +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/__init__.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/__init__.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/__init__.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_blob_client.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_blob_client_helpers.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_blob_service_client.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_blob_service_client_helpers.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_container_client.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_container_client_helpers.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_deserialize.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_download.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_encryption.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/__init__.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/_azure_blob_storage.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/_configuration.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/_patch.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/_serialization.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/aio/__init__.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/aio/_azure_blob_storage.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/aio/_configuration.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/aio/_patch.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/aio/operations/__init__.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/aio/operations/_append_blob_operations.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/aio/operations/_blob_operations.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/aio/operations/_block_blob_operations.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/aio/operations/_container_operations.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/aio/operations/_page_blob_operations.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/aio/operations/_patch.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/aio/operations/_service_operations.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/models/__init__.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/models/_azure_blob_storage_enums.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/models/_models_py3.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/models/_patch.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/operations/__init__.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/operations/_append_blob_operations.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/operations/_blob_operations.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/operations/_block_blob_operations.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/operations/_container_operations.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/operations/_page_blob_operations.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/operations/_patch.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/operations/_service_operations.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/py.typed +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_lease.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_list_blobs_helper.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_models.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_quick_query_helper.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_serialize.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_shared/__init__.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_shared/authentication.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_shared/avro/__init__.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_shared/avro/datafile.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_shared/avro/datafile_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_shared/avro/schema.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_shared/base_client_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_shared/constants.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_shared/models.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_shared/parser.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_shared/policies.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_shared/response_handlers.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_shared/shared_access_signature.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_shared/uploads.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_shared_access_signature.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_upload_helpers.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/aio/__init__.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/aio/_blob_client_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/aio/_blob_service_client_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/aio/_container_client_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/aio/_encryption_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/aio/_lease_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/aio/_list_blobs_helper.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/aio/_models.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/aio/_upload_helpers.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/py.typed +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure_storage_blob.egg-info/SOURCES.txt +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure_storage_blob.egg-info/dependency_links.txt +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure_storage_blob.egg-info/not-zip-safe +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure_storage_blob.egg-info/requires.txt +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure_storage_blob.egg-info/top_level.txt +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/migration_guide.md +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/pyproject.toml +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/README.md +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_authentication.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_authentication_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_batch_delete_blobs.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_client_side_encryption.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_client_side_encryption_keyvault.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_common.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_common_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_container_access_policy.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_container_access_policy_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_containers.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_containers_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_copy_blob.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_copy_blob_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_directory_interface.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_directory_interface_mimetype.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_enumerate_blobs.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_enumerate_blobs_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_hello_world.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_hello_world_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_network_activity_logging.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_proxy_configuration.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_query.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_service.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_service_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_walk_blob_hierarchy.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/samples/blob_samples_walk_blob_hierarchy_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/setup.cfg +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/avro/__init__.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/avro/test_avro.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/avro/test_avro_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/conftest.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/encryption_test_helper.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/fake_credentials.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/perfstress_tests/T1_legacy_tests/__init__.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/perfstress_tests/T1_legacy_tests/_test_base_legacy.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/perfstress_tests/T1_legacy_tests/download.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/perfstress_tests/T1_legacy_tests/list_blobs.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/perfstress_tests/T1_legacy_tests/upload.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/perfstress_tests/T1_legacy_tests/upload_block.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/perfstress_tests/T1_legacy_tests/upload_from_file.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/perfstress_tests/__init__.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/perfstress_tests/_test_base.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/perfstress_tests/download.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/perfstress_tests/key_wrapper.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/perfstress_tests/list_blobs.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/perfstress_tests/upload.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/perfstress_tests/upload_block.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/perfstress_tests/upload_from_file.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/settings/__init__.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/settings/settings_fake.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/settings/testcase.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_append_blob.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_append_blob_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_blob_access_conditions.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_blob_access_conditions_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_blob_api_version.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_blob_api_version_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_blob_client.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_blob_client_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_blob_encryption.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_blob_encryption_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_blob_encryption_v2.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_blob_encryption_v2_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_blob_retry.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_blob_retry_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_blob_service_properties.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_blob_service_properties_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_blob_service_stats.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_blob_service_stats_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_blob_storage_account.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_blob_storage_account_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_blob_tags.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_blob_tags_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_block_blob.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_block_blob_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_block_blob_sync_copy.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_block_blob_sync_copy_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_common_blob_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_container.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_container_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_cpk.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_cpk_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_cpk_n.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_cpk_n_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_dictmixin.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_get_blob.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_get_blob_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_large_block_blob.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_large_block_blob_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_largest_block_blob.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_largest_block_blob_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_logging.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_logging_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_ors.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_ors_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_page_blob.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_page_blob_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_quick_query.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_retry.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_retry_async.py +0 -0
- {azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/tests/test_upload_chunking.py +0 -0
@@ -1,5 +1,15 @@
|
|
1
1
|
# Release History
|
2
2
|
|
3
|
+
## 12.25.1 (2025-03-27)
|
4
|
+
|
5
|
+
### Other Changes
|
6
|
+
- Updated dependency for `azure-storage-file-datalake` type hints.
|
7
|
+
|
8
|
+
## 12.25.0 (2025-03-11)
|
9
|
+
|
10
|
+
### Features Added
|
11
|
+
- Stable release of features from 12.25.0b1
|
12
|
+
|
3
13
|
## 12.25.0b1 (2025-02-11)
|
4
14
|
|
5
15
|
### Features Added
|
{azure_storage_blob-12.25.0b1/azure_storage_blob.egg-info → azure_storage_blob-12.25.1}/PKG-INFO
RENAMED
@@ -1,13 +1,13 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: azure-storage-blob
|
3
|
-
Version: 12.25.
|
3
|
+
Version: 12.25.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 ::
|
10
|
+
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
|
@@ -162,11 +162,11 @@ class BinaryDecoder(object):
|
|
162
162
|
try:
|
163
163
|
return input_bytes.decode('utf-8')
|
164
164
|
except UnicodeDecodeError as exn:
|
165
|
-
logger.error('Invalid UTF-8 input bytes: %r', input_bytes)
|
165
|
+
logger.error('Invalid UTF-8 input bytes: %r', input_bytes) # pylint: disable=do-not-log-raised-errors
|
166
166
|
raise exn
|
167
167
|
else:
|
168
168
|
# PY2
|
169
|
-
return unicode(input_bytes, "utf-8")
|
169
|
+
return unicode(input_bytes, "utf-8") # pylint: disable=undefined-variable
|
170
170
|
|
171
171
|
def skip_null(self):
|
172
172
|
pass
|
@@ -145,7 +145,7 @@ class AsyncBinaryDecoder(object):
|
|
145
145
|
try:
|
146
146
|
return input_bytes.decode('utf-8')
|
147
147
|
except UnicodeDecodeError as exn:
|
148
|
-
logger.error('Invalid UTF-8 input bytes: %r', input_bytes)
|
148
|
+
logger.error('Invalid UTF-8 input bytes: %r', input_bytes) # pylint: disable=do-not-log-raised-errors
|
149
149
|
raise exn
|
150
150
|
else:
|
151
151
|
# PY2
|
@@ -65,7 +65,10 @@ _SERVICE_PARAMS = {
|
|
65
65
|
|
66
66
|
|
67
67
|
class StorageAccountHostsMixin(object):
|
68
|
+
|
68
69
|
_client: Any
|
70
|
+
_hosts: Dict[str, str]
|
71
|
+
|
69
72
|
def __init__(
|
70
73
|
self,
|
71
74
|
parsed_url: Any,
|
@@ -74,7 +77,7 @@ class StorageAccountHostsMixin(object):
|
|
74
77
|
**kwargs: Any
|
75
78
|
) -> None:
|
76
79
|
self._location_mode = kwargs.get("_location_mode", LocationMode.PRIMARY)
|
77
|
-
self._hosts = kwargs.get("_hosts")
|
80
|
+
self._hosts = kwargs.get("_hosts", {})
|
78
81
|
self.scheme = parsed_url.scheme
|
79
82
|
self._is_localhost = False
|
80
83
|
|
@@ -93,7 +96,7 @@ class StorageAccountHostsMixin(object):
|
|
93
96
|
if self.scheme.lower() != "https" and hasattr(self.credential, "get_token"):
|
94
97
|
raise ValueError("Token credential is only supported with HTTPS.")
|
95
98
|
|
96
|
-
secondary_hostname =
|
99
|
+
secondary_hostname = ""
|
97
100
|
if hasattr(self.credential, "account_name"):
|
98
101
|
self.account_name = self.credential.account_name
|
99
102
|
secondary_hostname = f"{self.credential.account_name}-secondary.{service_name}.{SERVICE_HOST_BASE}"
|
@@ -5,7 +5,7 @@
|
|
5
5
|
# --------------------------------------------------------------------------
|
6
6
|
# pylint: disable=invalid-overridden-method
|
7
7
|
|
8
|
-
import asyncio
|
8
|
+
import asyncio # pylint: disable=do-not-import-asyncio
|
9
9
|
import logging
|
10
10
|
import random
|
11
11
|
from typing import Any, Dict, TYPE_CHECKING
|
@@ -136,8 +136,7 @@ def validate_and_format_range_headers(
|
|
136
136
|
return range_header, range_validation
|
137
137
|
|
138
138
|
|
139
|
-
def add_metadata_headers(metadata=None):
|
140
|
-
# type: (Optional[Dict[str, str]]) -> Dict[str, str]
|
139
|
+
def add_metadata_headers(metadata: Optional[Dict[str, str]] = None) -> Dict[str, str]:
|
141
140
|
headers = {}
|
142
141
|
if metadata:
|
143
142
|
for key, value in metadata.items():
|
@@ -4,10 +4,9 @@
|
|
4
4
|
# license information.
|
5
5
|
# --------------------------------------------------------------------------
|
6
6
|
|
7
|
-
import asyncio
|
7
|
+
import asyncio # pylint: disable=do-not-import-asyncio
|
8
8
|
import inspect
|
9
9
|
import threading
|
10
|
-
from asyncio import Lock
|
11
10
|
from io import UnsupportedOperation
|
12
11
|
from itertools import islice
|
13
12
|
from math import ceil
|
@@ -165,7 +164,7 @@ class _ChunkUploader(object): # pylint: disable=too-many-instance-attributes
|
|
165
164
|
|
166
165
|
# Progress feedback
|
167
166
|
self.progress_total = 0
|
168
|
-
self.progress_lock = Lock() if parallel else None
|
167
|
+
self.progress_lock = asyncio.Lock() if parallel else None
|
169
168
|
self.progress_hook = progress_hook
|
170
169
|
|
171
170
|
# Encryption
|
{azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1/azure_storage_blob.egg-info}/PKG-INFO
RENAMED
@@ -1,13 +1,13 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: azure-storage-blob
|
3
|
-
Version: 12.25.
|
3
|
+
Version: 12.25.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 ::
|
10
|
+
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
|
@@ -56,7 +56,7 @@ setup(
|
|
56
56
|
url='https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/storage/azure-storage-blob',
|
57
57
|
keywords="azure, azure sdk",
|
58
58
|
classifiers=[
|
59
|
-
'Development Status ::
|
59
|
+
'Development Status :: 5 - Production/Stable',
|
60
60
|
'Programming Language :: Python',
|
61
61
|
'Programming Language :: Python :: 3 :: Only',
|
62
62
|
'Programming Language :: Python :: 3',
|
@@ -53,6 +53,7 @@ from azure.storage.blob._generated.models import RehydratePriority
|
|
53
53
|
from devtools_testutils import FakeTokenCredential, recorded_by_proxy
|
54
54
|
from devtools_testutils.storage import StorageRecordedTestCase
|
55
55
|
from settings.testcase import BlobPreparer
|
56
|
+
from test_helpers import MockStorageTransport
|
56
57
|
|
57
58
|
# ------------------------------------------------------------------------------
|
58
59
|
TEST_CONTAINER_PREFIX = 'container'
|
@@ -3531,4 +3532,57 @@ class TestStorageCommonBlob(StorageRecordedTestCase):
|
|
3531
3532
|
result = blob.download_blob().readall()
|
3532
3533
|
assert result == data[:length]
|
3533
3534
|
|
3535
|
+
@BlobPreparer()
|
3536
|
+
def test_mock_transport_no_content_validation(self, **kwargs):
|
3537
|
+
storage_account_name = kwargs.pop("storage_account_name")
|
3538
|
+
storage_account_key = kwargs.pop("storage_account_key")
|
3539
|
+
|
3540
|
+
transport = MockStorageTransport()
|
3541
|
+
blob_client = BlobClient(
|
3542
|
+
self.account_url(storage_account_name, "blob"),
|
3543
|
+
container_name='test_cont',
|
3544
|
+
blob_name='test_blob',
|
3545
|
+
credential=storage_account_key,
|
3546
|
+
transport=transport,
|
3547
|
+
retry_total=0
|
3548
|
+
)
|
3549
|
+
|
3550
|
+
content = blob_client.download_blob()
|
3551
|
+
assert content is not None
|
3552
|
+
|
3553
|
+
props = blob_client.get_blob_properties()
|
3554
|
+
assert props is not None
|
3555
|
+
|
3556
|
+
data = b"Hello World!"
|
3557
|
+
resp = blob_client.upload_blob(data, overwrite=True)
|
3558
|
+
assert resp is not None
|
3559
|
+
|
3560
|
+
blob_data = blob_client.download_blob().read()
|
3561
|
+
assert blob_data == b"Hello World!" # data is fixed by mock transport
|
3562
|
+
|
3563
|
+
resp = blob_client.delete_blob()
|
3564
|
+
assert resp is None
|
3565
|
+
|
3566
|
+
@BlobPreparer()
|
3567
|
+
def test_mock_transport_with_content_validation(self, **kwargs):
|
3568
|
+
storage_account_name = kwargs.pop("storage_account_name")
|
3569
|
+
storage_account_key = kwargs.pop("storage_account_key")
|
3570
|
+
|
3571
|
+
transport = MockStorageTransport()
|
3572
|
+
blob_client = BlobClient(
|
3573
|
+
self.account_url(storage_account_name, "blob"),
|
3574
|
+
container_name='test_cont',
|
3575
|
+
blob_name='test_blob',
|
3576
|
+
credential=storage_account_key,
|
3577
|
+
transport=transport,
|
3578
|
+
retry_total=0
|
3579
|
+
)
|
3580
|
+
|
3581
|
+
data = b"Hello World!"
|
3582
|
+
resp = blob_client.upload_blob(data, overwrite=True, validate_content=True)
|
3583
|
+
assert resp is not None
|
3584
|
+
|
3585
|
+
blob_data = blob_client.download_blob(validate_content=True).read()
|
3586
|
+
assert blob_data == b"Hello World!" # data is fixed by mock transport
|
3587
|
+
|
3534
3588
|
# ------------------------------------------------------------------------------
|
@@ -0,0 +1,153 @@
|
|
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
|
+
|
7
|
+
from io import IOBase, UnsupportedOperation
|
8
|
+
from typing import Any, Dict, Optional
|
9
|
+
from typing_extensions import Self
|
10
|
+
|
11
|
+
from azure.core.pipeline.transport import HttpTransport, RequestsTransportResponse
|
12
|
+
from azure.core.rest import HttpRequest
|
13
|
+
from requests import Response
|
14
|
+
from urllib3 import HTTPResponse
|
15
|
+
|
16
|
+
|
17
|
+
class ProgressTracker:
|
18
|
+
def __init__(self, total: int, step: int):
|
19
|
+
self.total = total
|
20
|
+
self.step = step
|
21
|
+
self.current = 0
|
22
|
+
|
23
|
+
def assert_progress(self, current: int, total: Optional[int]):
|
24
|
+
if self.current != self.total:
|
25
|
+
self.current += self.step
|
26
|
+
|
27
|
+
if total:
|
28
|
+
assert self.total == total
|
29
|
+
assert self.current == current
|
30
|
+
|
31
|
+
def assert_complete(self):
|
32
|
+
assert self.total == self.current
|
33
|
+
|
34
|
+
|
35
|
+
class NonSeekableStream(IOBase):
|
36
|
+
def __init__(self, wrapped_stream):
|
37
|
+
self.wrapped_stream = wrapped_stream
|
38
|
+
|
39
|
+
def write(self, data):
|
40
|
+
return self.wrapped_stream.write(data)
|
41
|
+
|
42
|
+
def read(self, count):
|
43
|
+
return self.wrapped_stream.read(count)
|
44
|
+
|
45
|
+
def seek(self, *args, **kwargs):
|
46
|
+
raise UnsupportedOperation("boom!")
|
47
|
+
|
48
|
+
def tell(self):
|
49
|
+
return self.wrapped_stream.tell()
|
50
|
+
|
51
|
+
|
52
|
+
class MockHttpClientResponse(Response):
|
53
|
+
def __init__(
|
54
|
+
self, url: str,
|
55
|
+
body_bytes: bytes,
|
56
|
+
headers: Dict[str, Any],
|
57
|
+
status: int = 200,
|
58
|
+
reason: str = "OK"
|
59
|
+
) -> None:
|
60
|
+
super(MockHttpClientResponse).__init__()
|
61
|
+
self._url = url
|
62
|
+
self._body = body_bytes
|
63
|
+
self._content = body_bytes
|
64
|
+
self._cache = {}
|
65
|
+
self._loop = None
|
66
|
+
self._content_consumed = True
|
67
|
+
self.headers = headers
|
68
|
+
self.status_code = status
|
69
|
+
self.reason = reason
|
70
|
+
self.raw = HTTPResponse()
|
71
|
+
|
72
|
+
|
73
|
+
class MockStorageTransport(HttpTransport):
|
74
|
+
"""
|
75
|
+
This transport returns legacy http response objects from azure core and is
|
76
|
+
intended only to test our backwards compatibility support.
|
77
|
+
"""
|
78
|
+
def send(self, request: HttpRequest, **kwargs: Any) -> RequestsTransportResponse:
|
79
|
+
if request.method == 'GET':
|
80
|
+
# download_blob
|
81
|
+
headers = {
|
82
|
+
"Content-Type": "application/octet-stream",
|
83
|
+
"Content-Range": "bytes 0-17/18",
|
84
|
+
"Content-Length": "18",
|
85
|
+
}
|
86
|
+
|
87
|
+
if "x-ms-range-get-content-md5" in request.headers:
|
88
|
+
headers["Content-MD5"] = "7Qdih1MuhjZehB6Sv8UNjA==" # cspell:disable-line
|
89
|
+
|
90
|
+
rest_response = RequestsTransportResponse(
|
91
|
+
request=request,
|
92
|
+
requests_response=MockHttpClientResponse(
|
93
|
+
request.url,
|
94
|
+
b"Hello World!",
|
95
|
+
headers,
|
96
|
+
)
|
97
|
+
)
|
98
|
+
elif request.method == 'HEAD':
|
99
|
+
# get_blob_properties
|
100
|
+
rest_response = RequestsTransportResponse(
|
101
|
+
request=request,
|
102
|
+
requests_response=MockHttpClientResponse(
|
103
|
+
request.url,
|
104
|
+
b"",
|
105
|
+
{
|
106
|
+
"Content-Type": "application/octet-stream",
|
107
|
+
"Content-Length": "1024",
|
108
|
+
},
|
109
|
+
)
|
110
|
+
)
|
111
|
+
elif request.method == 'PUT':
|
112
|
+
# upload_blob
|
113
|
+
rest_response = RequestsTransportResponse(
|
114
|
+
request=request,
|
115
|
+
requests_response=MockHttpClientResponse(
|
116
|
+
request.url,
|
117
|
+
b"",
|
118
|
+
{
|
119
|
+
"Content-Length": "0",
|
120
|
+
},
|
121
|
+
201,
|
122
|
+
"Created"
|
123
|
+
)
|
124
|
+
)
|
125
|
+
elif request.method == 'DELETE':
|
126
|
+
# delete_blob
|
127
|
+
rest_response = RequestsTransportResponse(
|
128
|
+
request=request,
|
129
|
+
requests_response=MockHttpClientResponse(
|
130
|
+
request.url,
|
131
|
+
b"",
|
132
|
+
{
|
133
|
+
"Content-Length": "0",
|
134
|
+
},
|
135
|
+
202,
|
136
|
+
"Accepted"
|
137
|
+
)
|
138
|
+
)
|
139
|
+
else:
|
140
|
+
raise ValueError("The request is not accepted as part of MockStorageTransport.")
|
141
|
+
return rest_response
|
142
|
+
|
143
|
+
def __enter__(self) -> Self:
|
144
|
+
return self
|
145
|
+
|
146
|
+
def __exit__(self, *args: Any) -> None:
|
147
|
+
pass
|
148
|
+
|
149
|
+
def open(self) -> None:
|
150
|
+
pass
|
151
|
+
|
152
|
+
def close(self) -> None:
|
153
|
+
pass
|
@@ -6,9 +6,8 @@
|
|
6
6
|
from io import IOBase, UnsupportedOperation
|
7
7
|
from typing import Any, Dict, Optional
|
8
8
|
|
9
|
-
from azure.core.pipeline.transport import AsyncHttpTransport
|
9
|
+
from azure.core.pipeline.transport import AioHttpTransportResponse, AsyncHttpTransport
|
10
10
|
from azure.core.rest import HttpRequest
|
11
|
-
from azure.core.rest._aiohttp import RestAioHttpTransportResponse
|
12
11
|
from aiohttp import ClientResponse
|
13
12
|
|
14
13
|
|
@@ -90,7 +89,7 @@ class MockStorageTransport(AsyncHttpTransport):
|
|
90
89
|
This transport returns legacy http response objects from azure core and is
|
91
90
|
intended only to test our backwards compatibility support.
|
92
91
|
"""
|
93
|
-
async def send(self, request: HttpRequest, **kwargs: Any) ->
|
92
|
+
async def send(self, request: HttpRequest, **kwargs: Any) -> AioHttpTransportResponse:
|
94
93
|
if request.method == 'GET':
|
95
94
|
# download_blob
|
96
95
|
headers = {
|
@@ -102,9 +101,9 @@ class MockStorageTransport(AsyncHttpTransport):
|
|
102
101
|
if "x-ms-range-get-content-md5" in request.headers:
|
103
102
|
headers["Content-MD5"] = "I3pVbaOCUTom+G9F9uKFoA=="
|
104
103
|
|
105
|
-
rest_response =
|
104
|
+
rest_response = AioHttpTransportResponse(
|
106
105
|
request=request,
|
107
|
-
|
106
|
+
aiohttp_response=MockAioHttpClientResponse(
|
108
107
|
request.url,
|
109
108
|
b"Hello Async World!",
|
110
109
|
headers,
|
@@ -113,9 +112,9 @@ class MockStorageTransport(AsyncHttpTransport):
|
|
113
112
|
)
|
114
113
|
elif request.method == 'HEAD':
|
115
114
|
# get_blob_properties
|
116
|
-
rest_response =
|
115
|
+
rest_response = AioHttpTransportResponse(
|
117
116
|
request=request,
|
118
|
-
|
117
|
+
aiohttp_response=MockAioHttpClientResponse(
|
119
118
|
request.url,
|
120
119
|
b"",
|
121
120
|
{
|
@@ -127,9 +126,9 @@ class MockStorageTransport(AsyncHttpTransport):
|
|
127
126
|
)
|
128
127
|
elif request.method == 'PUT':
|
129
128
|
# upload_blob
|
130
|
-
rest_response =
|
129
|
+
rest_response = AioHttpTransportResponse(
|
131
130
|
request=request,
|
132
|
-
|
131
|
+
aiohttp_response=MockAioHttpClientResponse(
|
133
132
|
request.url,
|
134
133
|
b"",
|
135
134
|
{
|
@@ -142,9 +141,9 @@ class MockStorageTransport(AsyncHttpTransport):
|
|
142
141
|
)
|
143
142
|
elif request.method == 'DELETE':
|
144
143
|
# delete_blob
|
145
|
-
rest_response =
|
144
|
+
rest_response = AioHttpTransportResponse(
|
146
145
|
request=request,
|
147
|
-
|
146
|
+
aiohttp_response=MockAioHttpClientResponse(
|
148
147
|
request.url,
|
149
148
|
b"",
|
150
149
|
{
|
@@ -158,7 +157,7 @@ class MockStorageTransport(AsyncHttpTransport):
|
|
158
157
|
else:
|
159
158
|
raise ValueError("The request is not accepted as part of MockStorageTransport.")
|
160
159
|
|
161
|
-
await rest_response.
|
160
|
+
await rest_response.load_body()
|
162
161
|
return rest_response
|
163
162
|
|
164
163
|
async def __aenter__(self):
|
@@ -1,42 +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
|
4
|
-
# license information.
|
5
|
-
# --------------------------------------------------------------------------
|
6
|
-
from io import IOBase, UnsupportedOperation
|
7
|
-
from typing import Optional
|
8
|
-
|
9
|
-
|
10
|
-
class ProgressTracker:
|
11
|
-
def __init__(self, total: int, step: int):
|
12
|
-
self.total = total
|
13
|
-
self.step = step
|
14
|
-
self.current = 0
|
15
|
-
|
16
|
-
def assert_progress(self, current: int, total: Optional[int]):
|
17
|
-
if self.current != self.total:
|
18
|
-
self.current += self.step
|
19
|
-
|
20
|
-
if total:
|
21
|
-
assert self.total == total
|
22
|
-
assert self.current == current
|
23
|
-
|
24
|
-
def assert_complete(self):
|
25
|
-
assert self.total == self.current
|
26
|
-
|
27
|
-
|
28
|
-
class NonSeekableStream(IOBase):
|
29
|
-
def __init__(self, wrapped_stream):
|
30
|
-
self.wrapped_stream = wrapped_stream
|
31
|
-
|
32
|
-
def write(self, data):
|
33
|
-
return self.wrapped_stream.write(data)
|
34
|
-
|
35
|
-
def read(self, count):
|
36
|
-
return self.wrapped_stream.read(count)
|
37
|
-
|
38
|
-
def seek(self, *args, **kwargs):
|
39
|
-
raise UnsupportedOperation("boom!")
|
40
|
-
|
41
|
-
def tell(self):
|
42
|
-
return self.wrapped_stream.tell()
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_blob_client.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_container_client.py
RENAMED
File without changes
|
File without changes
|
{azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_deserialize.py
RENAMED
File without changes
|
File without changes
|
{azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_encryption.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/_patch.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_generated/py.typed
RENAMED
File without changes
|
File without changes
|
{azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_list_blobs_helper.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_serialize.py
RENAMED
File without changes
|
{azure_storage_blob-12.25.0b1 → azure_storage_blob-12.25.1}/azure/storage/blob/_shared/__init__.py
RENAMED
File without changes
|
File without changes
|