azure-storage-blob 12.18.0__tar.gz → 12.18.2__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.
Files changed (196) hide show
  1. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/CHANGELOG.md +12 -0
  2. {azure-storage-blob-12.18.0/azure_storage_blob.egg-info → azure-storage-blob-12.18.2}/PKG-INFO +2 -2
  3. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_blob_client.py +2 -1
  4. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_encryption.py +15 -5
  5. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/base_client.py +4 -1
  6. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_version.py +1 -1
  7. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2/azure_storage_blob.egg-info}/PKG-INFO +2 -2
  8. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/setup.py +1 -1
  9. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_blob_client.py +14 -1
  10. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_blob_encryption_v2.py +15 -7
  11. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_blob_encryption_v2_async.py +16 -7
  12. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/LICENSE +0 -0
  13. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/MANIFEST.in +0 -0
  14. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/README.md +0 -0
  15. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/__init__.py +0 -0
  16. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/__init__.py +0 -0
  17. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/__init__.py +0 -0
  18. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_blob_service_client.py +0 -0
  19. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_container_client.py +0 -0
  20. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_deserialize.py +0 -0
  21. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_download.py +0 -0
  22. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/__init__.py +0 -0
  23. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/_azure_blob_storage.py +0 -0
  24. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/_configuration.py +0 -0
  25. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/_patch.py +0 -0
  26. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/_serialization.py +0 -0
  27. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/_vendor.py +0 -0
  28. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/aio/__init__.py +0 -0
  29. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/aio/_azure_blob_storage.py +0 -0
  30. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/aio/_configuration.py +0 -0
  31. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/aio/_patch.py +0 -0
  32. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/aio/operations/__init__.py +0 -0
  33. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/aio/operations/_append_blob_operations.py +0 -0
  34. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/aio/operations/_blob_operations.py +0 -0
  35. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/aio/operations/_block_blob_operations.py +0 -0
  36. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/aio/operations/_container_operations.py +0 -0
  37. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/aio/operations/_page_blob_operations.py +0 -0
  38. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/aio/operations/_patch.py +0 -0
  39. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/aio/operations/_service_operations.py +0 -0
  40. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/models/__init__.py +0 -0
  41. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/models/_azure_blob_storage_enums.py +0 -0
  42. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/models/_models_py3.py +0 -0
  43. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/models/_patch.py +0 -0
  44. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/operations/__init__.py +0 -0
  45. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/operations/_append_blob_operations.py +0 -0
  46. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/operations/_blob_operations.py +0 -0
  47. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/operations/_block_blob_operations.py +0 -0
  48. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/operations/_container_operations.py +0 -0
  49. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/operations/_page_blob_operations.py +0 -0
  50. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/operations/_patch.py +0 -0
  51. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/operations/_service_operations.py +0 -0
  52. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_lease.py +0 -0
  53. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_list_blobs_helper.py +0 -0
  54. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_models.py +0 -0
  55. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_quick_query_helper.py +0 -0
  56. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_serialize.py +0 -0
  57. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/__init__.py +0 -0
  58. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/authentication.py +0 -0
  59. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/avro/__init__.py +0 -0
  60. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/avro/avro_io.py +0 -0
  61. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/avro/avro_io_async.py +0 -0
  62. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/avro/datafile.py +0 -0
  63. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/avro/datafile_async.py +0 -0
  64. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/avro/schema.py +0 -0
  65. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/base_client_async.py +0 -0
  66. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/constants.py +0 -0
  67. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/models.py +0 -0
  68. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/parser.py +0 -0
  69. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/policies.py +0 -0
  70. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/policies_async.py +0 -0
  71. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/request_handlers.py +0 -0
  72. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/response_handlers.py +0 -0
  73. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/shared_access_signature.py +0 -0
  74. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/uploads.py +0 -0
  75. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/uploads_async.py +0 -0
  76. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared_access_signature.py +0 -0
  77. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/_upload_helpers.py +0 -0
  78. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/aio/__init__.py +0 -0
  79. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/aio/_blob_client_async.py +0 -0
  80. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/aio/_blob_service_client_async.py +0 -0
  81. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/aio/_container_client_async.py +0 -0
  82. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/aio/_download_async.py +0 -0
  83. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/aio/_lease_async.py +0 -0
  84. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/aio/_list_blobs_helper.py +0 -0
  85. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/aio/_models.py +0 -0
  86. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/aio/_upload_helpers.py +0 -0
  87. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure/storage/blob/py.typed +0 -0
  88. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure_storage_blob.egg-info/SOURCES.txt +0 -0
  89. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure_storage_blob.egg-info/dependency_links.txt +0 -0
  90. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure_storage_blob.egg-info/not-zip-safe +0 -0
  91. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure_storage_blob.egg-info/requires.txt +0 -0
  92. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/azure_storage_blob.egg-info/top_level.txt +0 -0
  93. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/migration_guide.md +0 -0
  94. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/pyproject.toml +0 -0
  95. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/README.md +0 -0
  96. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_authentication.py +0 -0
  97. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_authentication_async.py +0 -0
  98. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_batch_delete_blobs.py +0 -0
  99. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_client_side_encryption.py +0 -0
  100. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_client_side_encryption_keyvault.py +0 -0
  101. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_common.py +0 -0
  102. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_common_async.py +0 -0
  103. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_container_access_policy.py +0 -0
  104. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_container_access_policy_async.py +0 -0
  105. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_containers.py +0 -0
  106. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_containers_async.py +0 -0
  107. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_copy_blob.py +0 -0
  108. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_copy_blob_async.py +0 -0
  109. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_directory_interface.py +0 -0
  110. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_directory_interface_mimetype.py +0 -0
  111. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_enumerate_blobs.py +0 -0
  112. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_enumerate_blobs_async.py +0 -0
  113. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_hello_world.py +0 -0
  114. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_hello_world_async.py +0 -0
  115. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_network_activity_logging.py +0 -0
  116. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_proxy_configuration.py +0 -0
  117. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_query.py +0 -0
  118. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_service.py +0 -0
  119. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_service_async.py +0 -0
  120. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_walk_blob_hierarchy.py +0 -0
  121. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/samples/blob_samples_walk_blob_hierarchy_async.py +0 -0
  122. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/setup.cfg +0 -0
  123. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/avro/__init__.py +0 -0
  124. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/avro/test_avro.py +0 -0
  125. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/avro/test_avro_async.py +0 -0
  126. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/conftest.py +0 -0
  127. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/encryption_test_helper.py +0 -0
  128. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/fake_credentials.py +0 -0
  129. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/perfstress_tests/T1_legacy_tests/__init__.py +0 -0
  130. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/perfstress_tests/T1_legacy_tests/_test_base_legacy.py +0 -0
  131. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/perfstress_tests/T1_legacy_tests/download.py +0 -0
  132. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/perfstress_tests/T1_legacy_tests/list_blobs.py +0 -0
  133. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/perfstress_tests/T1_legacy_tests/upload.py +0 -0
  134. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/perfstress_tests/T1_legacy_tests/upload_block.py +0 -0
  135. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/perfstress_tests/T1_legacy_tests/upload_from_file.py +0 -0
  136. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/perfstress_tests/__init__.py +0 -0
  137. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/perfstress_tests/_test_base.py +0 -0
  138. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/perfstress_tests/download.py +0 -0
  139. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/perfstress_tests/key_wrapper.py +0 -0
  140. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/perfstress_tests/list_blobs.py +0 -0
  141. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/perfstress_tests/upload.py +0 -0
  142. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/perfstress_tests/upload_block.py +0 -0
  143. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/perfstress_tests/upload_from_file.py +0 -0
  144. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/settings/__init__.py +0 -0
  145. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/settings/settings_fake.py +0 -0
  146. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/settings/testcase.py +0 -0
  147. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_append_blob.py +0 -0
  148. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_append_blob_async.py +0 -0
  149. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_blob_access_conditions.py +0 -0
  150. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_blob_access_conditions_async.py +0 -0
  151. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_blob_api_version.py +0 -0
  152. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_blob_api_version_async.py +0 -0
  153. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_blob_client_async.py +0 -0
  154. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_blob_encryption.py +0 -0
  155. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_blob_encryption_async.py +0 -0
  156. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_blob_retry.py +0 -0
  157. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_blob_retry_async.py +0 -0
  158. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_blob_service_properties.py +0 -0
  159. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_blob_service_properties_async.py +0 -0
  160. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_blob_service_stats.py +0 -0
  161. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_blob_service_stats_async.py +0 -0
  162. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_blob_storage_account.py +0 -0
  163. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_blob_storage_account_async.py +0 -0
  164. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_blob_tags.py +0 -0
  165. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_blob_tags_async.py +0 -0
  166. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_block_blob.py +0 -0
  167. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_block_blob_async.py +0 -0
  168. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_block_blob_sync_copy.py +0 -0
  169. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_block_blob_sync_copy_async.py +0 -0
  170. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_common_blob.py +0 -0
  171. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_common_blob_async.py +0 -0
  172. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_container.py +0 -0
  173. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_container_async.py +0 -0
  174. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_cpk.py +0 -0
  175. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_cpk_async.py +0 -0
  176. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_cpk_n.py +0 -0
  177. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_cpk_n_async.py +0 -0
  178. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_dictmixin.py +0 -0
  179. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_get_blob.py +0 -0
  180. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_get_blob_async.py +0 -0
  181. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_helpers.py +0 -0
  182. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_helpers_async.py +0 -0
  183. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_large_block_blob.py +0 -0
  184. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_large_block_blob_async.py +0 -0
  185. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_largest_block_blob.py +0 -0
  186. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_largest_block_blob_async.py +0 -0
  187. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_logging.py +0 -0
  188. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_logging_async.py +0 -0
  189. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_ors.py +0 -0
  190. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_ors_async.py +0 -0
  191. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_page_blob.py +0 -0
  192. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_page_blob_async.py +0 -0
  193. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_quick_query.py +0 -0
  194. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_retry.py +0 -0
  195. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_retry_async.py +0 -0
  196. {azure-storage-blob-12.18.0 → azure-storage-blob-12.18.2}/tests/test_upload_chunking.py +0 -0
@@ -1,5 +1,17 @@
1
1
  # Release History
2
2
 
3
+ ## 12.18.2 (2023-09-25)
4
+
5
+ ### Bugs Fixed
6
+ - Fixed an issue where `user_agent` was being ignored on `upload_blob` or `download_blob` if client was configured
7
+ for encryption.
8
+
9
+ ## 12.18.1 (2023-09-13)
10
+
11
+ ### Bugs Fixed
12
+ - Fixed breaking `KeyError: 'sdk_moniker'` in `create_configuration`.
13
+ NOTE: This is not an exported method and therefore should not be imported/called directly.
14
+
3
15
  ## 12.18.0 (2023-09-12)
4
16
 
5
17
  ### Features Added
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: azure-storage-blob
3
- Version: 12.18.0
3
+ Version: 12.18.2
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
+ Classifier: Development Status :: 4 - Beta
11
11
  Classifier: Programming Language :: Python
12
12
  Classifier: Programming Language :: Python :: 3 :: Only
13
13
  Classifier: Programming Language :: Python :: 3
@@ -1005,7 +1005,8 @@ class BlobClient(StorageAccountHostsMixin, StorageEncryptionMixin): # pylint: d
1005
1005
  This operations returns a BlobQueryReader, users need to use readall() or readinto() to get query data.
1006
1006
 
1007
1007
  :param str query_expression:
1008
- Required. a query statement.
1008
+ Required. a query statement. For more details see
1009
+ https://learn.microsoft.com/azure/storage/blobs/query-acceleration-sql-reference.
1009
1010
  :keyword Callable[~azure.storage.blob.BlobQueryError] on_error:
1010
1011
  A function to be called on any processing errors returned by the service.
1011
1012
  :keyword blob_format:
@@ -286,13 +286,23 @@ def modify_user_agent_for_encryption(
286
286
  :param str encryption_version: The version of encryption being used.
287
287
  :param Dict[str, Any] request_options: The reuqest options to add the user agent override to.
288
288
  """
289
+ # If the user has specified user_agent_overwrite=True, don't make any modifications
290
+ if request_options.get('user_agent_overwrite'):
291
+ return
292
+
293
+ # If the feature flag is already present, don't add it again
289
294
  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:]}"
295
+ if feature_flag in user_agent:
296
+ return
297
+
298
+ index = user_agent.find(f"azsdk-python-{moniker}")
299
+ user_agent = f"{user_agent[:index]}{feature_flag} {user_agent[index:]}"
300
+ # Since we are using user_agent_overwrite=True, we must prepend the user's user_agent if there is one
301
+ if request_options.get('user_agent'):
302
+ user_agent = f"{request_options.get('user_agent')} {user_agent}"
293
303
 
294
- request_options['user_agent'] = user_agent
295
- request_options['user_agent_overwrite'] = True
304
+ request_options['user_agent'] = user_agent
305
+ request_options['user_agent_overwrite'] = True
296
306
 
297
307
 
298
308
  def get_adjusted_upload_size(length: int, encryption_version: str) -> int:
@@ -410,9 +410,12 @@ def parse_connection_str(conn_str, credential, service):
410
410
 
411
411
  def create_configuration(**kwargs):
412
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}"
413
416
  config = Configuration(**kwargs)
414
417
  config.headers_policy = StorageHeadersPolicy(**kwargs)
415
- config.user_agent_policy = UserAgentPolicy(sdk_moniker=kwargs.pop('sdk_moniker'), **kwargs)
418
+ config.user_agent_policy = UserAgentPolicy(**kwargs)
416
419
  config.retry_policy = kwargs.get("retry_policy") or ExponentialRetry(**kwargs)
417
420
  config.logging_policy = StorageLoggingPolicy(**kwargs)
418
421
  config.proxy_policy = ProxyPolicy(**kwargs)
@@ -4,4 +4,4 @@
4
4
  # license information.
5
5
  # --------------------------------------------------------------------------
6
6
 
7
- VERSION = "12.18.0"
7
+ VERSION = "12.18.2"
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: azure-storage-blob
3
- Version: 12.18.0
3
+ Version: 12.18.2
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
+ Classifier: Development Status :: 4 - Beta
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 :: 5 - Production/Stable',
59
+ 'Development Status :: 4 - Beta',
60
60
  'Programming Language :: Python',
61
61
  'Programming Language :: Python :: 3 :: Only',
62
62
  'Programming Language :: Python :: 3',
@@ -9,7 +9,6 @@ from datetime import datetime, timedelta
9
9
 
10
10
  import pytest
11
11
  from azure.core.credentials import AzureSasCredential
12
- from azure.core.exceptions import AzureError
13
12
  from azure.storage.blob import (
14
13
  AccountSasPermissions,
15
14
  BlobClient,
@@ -19,6 +18,7 @@ from azure.storage.blob import (
19
18
  ResourceTypes,
20
19
  VERSION,
21
20
  )
21
+ from azure.storage.blob._shared.base_client import create_configuration
22
22
 
23
23
  from devtools_testutils import recorded_by_proxy
24
24
  from devtools_testutils.storage import StorageRecordedTestCase
@@ -718,4 +718,17 @@ class TestStorageClient(StorageRecordedTestCase):
718
718
  self.account_url(storage_account_name, "blob"), credential=storage_account_key, container_name='foo', blob_name='bar')
719
719
  service.close()
720
720
 
721
+ @BlobPreparer()
722
+ def test_create_configuration_legacy(self, **kwargs):
723
+ # Arrange
724
+ sdk_name = 'Blob-test'
725
+
726
+ # Act
727
+ config = create_configuration(storage_sdk=sdk_name)
728
+
729
+ # Assert
730
+ assert config is not None
731
+ assert config.max_block_size == 4 * 1024 * 1024
732
+ assert sdk_name in config.user_agent_policy.user_agent
733
+
721
734
  # ------------------------------------------------------------------------------
@@ -1066,9 +1066,23 @@ class TestStorageBlobEncryptionV2(StorageRecordedTestCase):
1066
1066
  storage_account_key = kwargs.pop("storage_account_key")
1067
1067
 
1068
1068
  self._setup(storage_account_name, storage_account_key)
1069
+ kek = KeyWrapper('key1')
1070
+ self.enable_encryption_v2(kek)
1069
1071
 
1070
1072
  app_id = 'TestAppId'
1071
- kek = KeyWrapper('key1')
1073
+ content = b'Hello World Encrypted!'
1074
+
1075
+ def assert_user_agent(request):
1076
+ start = f'{app_id} azstorage-clientsideencryption/2.0 '
1077
+ assert request.http_request.headers['User-Agent'].startswith(start)
1078
+
1079
+ # Test method level keyword
1080
+ blob = self.bsc.get_blob_client(self.container_name, self._get_blob_reference())
1081
+
1082
+ blob.upload_blob(content, overwrite=True, raw_request_hook=assert_user_agent, user_agent=app_id)
1083
+ blob.download_blob(raw_request_hook=assert_user_agent, user_agent=app_id).readall()
1084
+
1085
+ # Test client constructor level keyword
1072
1086
  bsc = BlobServiceClient(
1073
1087
  self.bsc.url,
1074
1088
  credential=storage_account_key,
@@ -1077,13 +1091,7 @@ class TestStorageBlobEncryptionV2(StorageRecordedTestCase):
1077
1091
  key_encryption_key=kek,
1078
1092
  user_agent=app_id)
1079
1093
 
1080
- def assert_user_agent(request):
1081
- start = f'{app_id} azstorage-clientsideencryption/2.0 '
1082
- assert request.http_request.headers['User-Agent'].startswith(start)
1083
-
1084
1094
  blob = bsc.get_blob_client(self.container_name, self._get_blob_reference())
1085
- content = b'Hello World Encrypted!'
1086
1095
 
1087
- # Act
1088
1096
  blob.upload_blob(content, overwrite=True, raw_request_hook=assert_user_agent)
1089
1097
  blob.download_blob(raw_request_hook=assert_user_agent).readall()
@@ -1067,9 +1067,24 @@ class TestStorageBlobEncryptionV2Async(AsyncStorageRecordedTestCase):
1067
1067
  storage_account_key = kwargs.pop("storage_account_key")
1068
1068
 
1069
1069
  await self._setup(storage_account_name, storage_account_key)
1070
+ kek = KeyWrapper('key1')
1071
+ self.enable_encryption_v2(kek)
1070
1072
 
1071
1073
  app_id = 'TestAppId'
1072
- kek = KeyWrapper('key1')
1074
+ content = b'Hello World Encrypted!'
1075
+
1076
+ def assert_user_agent(request):
1077
+ start = f'{app_id} azstorage-clientsideencryption/2.0 '
1078
+ assert request.http_request.headers['User-Agent'].startswith(start)
1079
+
1080
+ # Test method level keyword
1081
+ blob = self.bsc.get_blob_client(self.container_name, self._get_blob_reference())
1082
+
1083
+ with mock.patch('os.urandom', mock_urandom):
1084
+ await blob.upload_blob(content, overwrite=True, raw_request_hook=assert_user_agent, user_agent=app_id)
1085
+ await (await blob.download_blob(raw_request_hook=assert_user_agent, user_agent=app_id)).readall()
1086
+
1087
+ # Test client constructor level keyword
1073
1088
  bsc = BlobServiceClient(
1074
1089
  self.bsc.url,
1075
1090
  credential=storage_account_key,
@@ -1078,14 +1093,8 @@ class TestStorageBlobEncryptionV2Async(AsyncStorageRecordedTestCase):
1078
1093
  key_encryption_key=kek,
1079
1094
  user_agent=app_id)
1080
1095
 
1081
- def assert_user_agent(request):
1082
- start = f'{app_id} azstorage-clientsideencryption/2.0 '
1083
- assert request.http_request.headers['User-Agent'].startswith(start)
1084
-
1085
1096
  blob = bsc.get_blob_client(self.container_name, self._get_blob_reference())
1086
- content = b'Hello World Encrypted!'
1087
1097
 
1088
- # Act
1089
1098
  with mock.patch('os.urandom', mock_urandom):
1090
1099
  await blob.upload_blob(content, overwrite=True, raw_request_hook=assert_user_agent)
1091
1100
  await (await blob.download_blob(raw_request_hook=assert_user_agent)).readall()