azure-storage-blob 12.18.1__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.1 → azure-storage-blob-12.18.2}/CHANGELOG.md +6 -0
  2. {azure-storage-blob-12.18.1/azure_storage_blob.egg-info → azure-storage-blob-12.18.2}/PKG-INFO +2 -2
  3. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_blob_client.py +2 -1
  4. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_encryption.py +15 -5
  5. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_version.py +1 -1
  6. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2/azure_storage_blob.egg-info}/PKG-INFO +2 -2
  7. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/setup.py +1 -1
  8. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_blob_encryption_v2.py +15 -7
  9. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_blob_encryption_v2_async.py +16 -7
  10. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/LICENSE +0 -0
  11. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/MANIFEST.in +0 -0
  12. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/README.md +0 -0
  13. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/__init__.py +0 -0
  14. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/__init__.py +0 -0
  15. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/__init__.py +0 -0
  16. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_blob_service_client.py +0 -0
  17. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_container_client.py +0 -0
  18. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_deserialize.py +0 -0
  19. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_download.py +0 -0
  20. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/__init__.py +0 -0
  21. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/_azure_blob_storage.py +0 -0
  22. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/_configuration.py +0 -0
  23. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/_patch.py +0 -0
  24. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/_serialization.py +0 -0
  25. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/_vendor.py +0 -0
  26. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/aio/__init__.py +0 -0
  27. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/aio/_azure_blob_storage.py +0 -0
  28. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/aio/_configuration.py +0 -0
  29. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/aio/_patch.py +0 -0
  30. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/aio/operations/__init__.py +0 -0
  31. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/aio/operations/_append_blob_operations.py +0 -0
  32. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/aio/operations/_blob_operations.py +0 -0
  33. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/aio/operations/_block_blob_operations.py +0 -0
  34. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/aio/operations/_container_operations.py +0 -0
  35. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/aio/operations/_page_blob_operations.py +0 -0
  36. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/aio/operations/_patch.py +0 -0
  37. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/aio/operations/_service_operations.py +0 -0
  38. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/models/__init__.py +0 -0
  39. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/models/_azure_blob_storage_enums.py +0 -0
  40. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/models/_models_py3.py +0 -0
  41. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/models/_patch.py +0 -0
  42. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/operations/__init__.py +0 -0
  43. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/operations/_append_blob_operations.py +0 -0
  44. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/operations/_blob_operations.py +0 -0
  45. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/operations/_block_blob_operations.py +0 -0
  46. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/operations/_container_operations.py +0 -0
  47. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/operations/_page_blob_operations.py +0 -0
  48. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/operations/_patch.py +0 -0
  49. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_generated/operations/_service_operations.py +0 -0
  50. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_lease.py +0 -0
  51. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_list_blobs_helper.py +0 -0
  52. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_models.py +0 -0
  53. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_quick_query_helper.py +0 -0
  54. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_serialize.py +0 -0
  55. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/__init__.py +0 -0
  56. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/authentication.py +0 -0
  57. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/avro/__init__.py +0 -0
  58. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/avro/avro_io.py +0 -0
  59. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/avro/avro_io_async.py +0 -0
  60. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/avro/datafile.py +0 -0
  61. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/avro/datafile_async.py +0 -0
  62. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/avro/schema.py +0 -0
  63. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/base_client.py +0 -0
  64. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/base_client_async.py +0 -0
  65. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/constants.py +0 -0
  66. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/models.py +0 -0
  67. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/parser.py +0 -0
  68. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/policies.py +0 -0
  69. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/policies_async.py +0 -0
  70. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/request_handlers.py +0 -0
  71. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/response_handlers.py +0 -0
  72. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/shared_access_signature.py +0 -0
  73. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/uploads.py +0 -0
  74. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared/uploads_async.py +0 -0
  75. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_shared_access_signature.py +0 -0
  76. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/_upload_helpers.py +0 -0
  77. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/aio/__init__.py +0 -0
  78. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/aio/_blob_client_async.py +0 -0
  79. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/aio/_blob_service_client_async.py +0 -0
  80. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/aio/_container_client_async.py +0 -0
  81. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/aio/_download_async.py +0 -0
  82. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/aio/_lease_async.py +0 -0
  83. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/aio/_list_blobs_helper.py +0 -0
  84. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/aio/_models.py +0 -0
  85. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/aio/_upload_helpers.py +0 -0
  86. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure/storage/blob/py.typed +0 -0
  87. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure_storage_blob.egg-info/SOURCES.txt +0 -0
  88. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure_storage_blob.egg-info/dependency_links.txt +0 -0
  89. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure_storage_blob.egg-info/not-zip-safe +0 -0
  90. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure_storage_blob.egg-info/requires.txt +0 -0
  91. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/azure_storage_blob.egg-info/top_level.txt +0 -0
  92. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/migration_guide.md +0 -0
  93. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/pyproject.toml +0 -0
  94. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/README.md +0 -0
  95. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_authentication.py +0 -0
  96. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_authentication_async.py +0 -0
  97. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_batch_delete_blobs.py +0 -0
  98. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_client_side_encryption.py +0 -0
  99. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_client_side_encryption_keyvault.py +0 -0
  100. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_common.py +0 -0
  101. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_common_async.py +0 -0
  102. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_container_access_policy.py +0 -0
  103. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_container_access_policy_async.py +0 -0
  104. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_containers.py +0 -0
  105. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_containers_async.py +0 -0
  106. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_copy_blob.py +0 -0
  107. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_copy_blob_async.py +0 -0
  108. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_directory_interface.py +0 -0
  109. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_directory_interface_mimetype.py +0 -0
  110. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_enumerate_blobs.py +0 -0
  111. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_enumerate_blobs_async.py +0 -0
  112. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_hello_world.py +0 -0
  113. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_hello_world_async.py +0 -0
  114. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_network_activity_logging.py +0 -0
  115. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_proxy_configuration.py +0 -0
  116. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_query.py +0 -0
  117. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_service.py +0 -0
  118. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_service_async.py +0 -0
  119. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_walk_blob_hierarchy.py +0 -0
  120. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/samples/blob_samples_walk_blob_hierarchy_async.py +0 -0
  121. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/setup.cfg +0 -0
  122. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/avro/__init__.py +0 -0
  123. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/avro/test_avro.py +0 -0
  124. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/avro/test_avro_async.py +0 -0
  125. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/conftest.py +0 -0
  126. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/encryption_test_helper.py +0 -0
  127. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/fake_credentials.py +0 -0
  128. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/perfstress_tests/T1_legacy_tests/__init__.py +0 -0
  129. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/perfstress_tests/T1_legacy_tests/_test_base_legacy.py +0 -0
  130. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/perfstress_tests/T1_legacy_tests/download.py +0 -0
  131. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/perfstress_tests/T1_legacy_tests/list_blobs.py +0 -0
  132. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/perfstress_tests/T1_legacy_tests/upload.py +0 -0
  133. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/perfstress_tests/T1_legacy_tests/upload_block.py +0 -0
  134. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/perfstress_tests/T1_legacy_tests/upload_from_file.py +0 -0
  135. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/perfstress_tests/__init__.py +0 -0
  136. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/perfstress_tests/_test_base.py +0 -0
  137. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/perfstress_tests/download.py +0 -0
  138. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/perfstress_tests/key_wrapper.py +0 -0
  139. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/perfstress_tests/list_blobs.py +0 -0
  140. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/perfstress_tests/upload.py +0 -0
  141. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/perfstress_tests/upload_block.py +0 -0
  142. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/perfstress_tests/upload_from_file.py +0 -0
  143. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/settings/__init__.py +0 -0
  144. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/settings/settings_fake.py +0 -0
  145. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/settings/testcase.py +0 -0
  146. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_append_blob.py +0 -0
  147. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_append_blob_async.py +0 -0
  148. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_blob_access_conditions.py +0 -0
  149. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_blob_access_conditions_async.py +0 -0
  150. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_blob_api_version.py +0 -0
  151. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_blob_api_version_async.py +0 -0
  152. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_blob_client.py +0 -0
  153. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_blob_client_async.py +0 -0
  154. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_blob_encryption.py +0 -0
  155. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_blob_encryption_async.py +0 -0
  156. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_blob_retry.py +0 -0
  157. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_blob_retry_async.py +0 -0
  158. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_blob_service_properties.py +0 -0
  159. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_blob_service_properties_async.py +0 -0
  160. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_blob_service_stats.py +0 -0
  161. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_blob_service_stats_async.py +0 -0
  162. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_blob_storage_account.py +0 -0
  163. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_blob_storage_account_async.py +0 -0
  164. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_blob_tags.py +0 -0
  165. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_blob_tags_async.py +0 -0
  166. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_block_blob.py +0 -0
  167. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_block_blob_async.py +0 -0
  168. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_block_blob_sync_copy.py +0 -0
  169. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_block_blob_sync_copy_async.py +0 -0
  170. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_common_blob.py +0 -0
  171. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_common_blob_async.py +0 -0
  172. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_container.py +0 -0
  173. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_container_async.py +0 -0
  174. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_cpk.py +0 -0
  175. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_cpk_async.py +0 -0
  176. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_cpk_n.py +0 -0
  177. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_cpk_n_async.py +0 -0
  178. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_dictmixin.py +0 -0
  179. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_get_blob.py +0 -0
  180. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_get_blob_async.py +0 -0
  181. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_helpers.py +0 -0
  182. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_helpers_async.py +0 -0
  183. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_large_block_blob.py +0 -0
  184. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_large_block_blob_async.py +0 -0
  185. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_largest_block_blob.py +0 -0
  186. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_largest_block_blob_async.py +0 -0
  187. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_logging.py +0 -0
  188. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_logging_async.py +0 -0
  189. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_ors.py +0 -0
  190. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_ors_async.py +0 -0
  191. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_page_blob.py +0 -0
  192. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_page_blob_async.py +0 -0
  193. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_quick_query.py +0 -0
  194. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_retry.py +0 -0
  195. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_retry_async.py +0 -0
  196. {azure-storage-blob-12.18.1 → azure-storage-blob-12.18.2}/tests/test_upload_chunking.py +0 -0
@@ -1,5 +1,11 @@
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
+
3
9
  ## 12.18.1 (2023-09-13)
4
10
 
5
11
  ### Bugs Fixed
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: azure-storage-blob
3
- Version: 12.18.1
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:
@@ -4,4 +4,4 @@
4
4
  # license information.
5
5
  # --------------------------------------------------------------------------
6
6
 
7
- VERSION = "12.18.1"
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.1
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',
@@ -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()