Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-azure-storage-queue for 
openSUSE:Factory checked in at 2024-07-22 17:15:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-azure-storage-queue (Old)
 and      /work/SRC/openSUSE:Factory/.python-azure-storage-queue.new.17339 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-azure-storage-queue"

Mon Jul 22 17:15:48 2024 rev:25 rq:1188600 version:12.11.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-azure-storage-queue/python-azure-storage-queue.changes
    2024-05-15 21:29:13.283292028 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-azure-storage-queue.new.17339/python-azure-storage-queue.changes
 2024-07-22 17:16:19.077240280 +0200
@@ -1,0 +2,8 @@
+Fri Jul 19 09:10:02 UTC 2024 - John Paul Adrian Glaubitz 
<adrian.glaub...@suse.com>
+
+- New upstream release
+  + Version 12.11.0
+  + For detailed information about changes see the
+    CHANGELOG.md file provided with this package
+
+-------------------------------------------------------------------

Old:
----
  azure-storage-queue-12.10.0.tar.gz

New:
----
  azure-storage-queue-12.11.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-azure-storage-queue.spec ++++++
--- /var/tmp/diff_new_pack.9rrXXP/_old  2024-07-22 17:16:19.733266676 +0200
+++ /var/tmp/diff_new_pack.9rrXXP/_new  2024-07-22 17:16:19.733266676 +0200
@@ -18,7 +18,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-azure-storage-queue
-Version:        12.10.0
+Version:        12.11.0
 Release:        0
 Summary:        Microsoft Azure Storage Queue Client Library for Python
 License:        MIT

++++++ azure-storage-queue-12.10.0.tar.gz -> azure-storage-queue-12.11.0.tar.gz 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure-storage-queue-12.10.0/CHANGELOG.md 
new/azure-storage-queue-12.11.0/CHANGELOG.md
--- old/azure-storage-queue-12.10.0/CHANGELOG.md        2024-05-08 
20:26:27.000000000 +0200
+++ new/azure-storage-queue-12.11.0/CHANGELOG.md        2024-07-18 
21:52:56.000000000 +0200
@@ -1,5 +1,16 @@
 # Release History
 
+## 12.11.0 (2024-07-17)
+
+### Features Added
+- Stable release of features from 12.11.0b1
+
+## 12.11.0b1 (2024-06-11)
+
+### Features Added
+- Updated OAuth implementation to use the AAD scope returned in a Bearer 
challenge.
+- Fixed an issue where client specified service versions may be ignored.
+
 ## 12.10.0 (2024-05-07)
 
 ### Features Added
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure-storage-queue-12.10.0/PKG-INFO 
new/azure-storage-queue-12.11.0/PKG-INFO
--- old/azure-storage-queue-12.10.0/PKG-INFO    2024-05-08 20:42:33.471069000 
+0200
+++ new/azure-storage-queue-12.11.0/PKG-INFO    2024-07-18 22:10:57.104967000 
+0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: azure-storage-queue
-Version: 12.10.0
+Version: 12.11.0
 Summary: Microsoft Azure Azure Queue Storage Client Library for Python
 Home-page: 
https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/storage/azure-storage-queue
 Author: Microsoft Corporation
@@ -19,8 +19,13 @@
 Classifier: License :: OSI Approved :: MIT License
 Requires-Python: >=3.8
 Description-Content-Type: text/markdown
-Provides-Extra: aio
 License-File: LICENSE
+Requires-Dist: azure-core>=1.28.0
+Requires-Dist: cryptography>=2.1.4
+Requires-Dist: typing-extensions>=4.6.0
+Requires-Dist: isodate>=0.6.1
+Provides-Extra: aio
+Requires-Dist: azure-core[aio]>=1.28.0; extra == "aio"
 
 # Azure Storage Queues client library for Python
 
@@ -429,6 +434,17 @@
 
 # Release History
 
+## 12.11.0 (2024-07-17)
+
+### Features Added
+- Stable release of features from 12.11.0b1
+
+## 12.11.0b1 (2024-06-11)
+
+### Features Added
+- Updated OAuth implementation to use the AAD scope returned in a Bearer 
challenge.
+- Fixed an issue where client specified service versions may be ignored.
+
 ## 12.10.0 (2024-05-07)
 
 ### Features Added
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/_patch.py 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/_patch.py
--- old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/_patch.py    
2024-05-08 20:26:27.000000000 +0200
+++ new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/_patch.py    
2024-07-18 21:52:56.000000000 +0200
@@ -27,5 +27,7 @@
 
 # This file is used for handwritten extensions to the generated code. Example:
 # 
https://github.com/Azure/azure-sdk-for-python/blob/main/doc/dev/customize_code/how-to-patch-sdk-code.md
+
+
 def patch_sdk():
     pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/_serialization.py
 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/_serialization.py
--- 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/_serialization.py
    2024-05-08 20:26:27.000000000 +0200
+++ 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/_serialization.py
    2024-07-18 21:52:56.000000000 +0200
@@ -1441,7 +1441,7 @@
         elif isinstance(response, type) and issubclass(response, Enum):
             return self.deserialize_enum(data, response)
 
-        if data is None:
+        if data is None or data is CoreNull:
             return data
         try:
             attributes = response._attribute_map  # type: ignore
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/aio/_patch.py 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/aio/_patch.py
--- 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/aio/_patch.py    
    2024-05-08 20:26:27.000000000 +0200
+++ 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/aio/_patch.py    
    2024-07-18 21:52:56.000000000 +0200
@@ -27,5 +27,7 @@
 
 # This file is used for handwritten extensions to the generated code. Example:
 # 
https://github.com/Azure/azure-sdk-for-python/blob/main/doc/dev/customize_code/how-to-patch-sdk-code.md
+
+
 def patch_sdk():
     pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/aio/operations/_message_id_operations.py
 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/aio/operations/_message_id_operations.py
--- 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/aio/operations/_message_id_operations.py
     2024-05-08 20:26:27.000000000 +0200
+++ 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/aio/operations/_message_id_operations.py
     2024-07-18 21:52:56.000000000 +0200
@@ -6,7 +6,8 @@
 # Code generated by Microsoft (R) AutoRest Code Generator.
 # Changes may cause incorrect behavior and will be lost if the code is 
regenerated.
 # --------------------------------------------------------------------------
-from typing import Any, Callable, Dict, Optional, TypeVar
+import sys
+from typing import Any, Callable, Dict, Optional, Type, TypeVar
 
 from azure.core.exceptions import (
     ClientAuthenticationError,
@@ -26,6 +27,10 @@
 from ..._vendor import _convert_request
 from ...operations._message_id_operations import build_delete_request, 
build_update_request
 
+if sys.version_info >= (3, 9):
+    from collections.abc import MutableMapping
+else:
+    from typing import MutableMapping  # type: ignore  # pylint: 
disable=ungrouped-imports
 T = TypeVar("T")
 ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], 
T, Dict[str, Any]], Any]]
 
@@ -88,7 +93,7 @@
         :rtype: None
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
@@ -167,7 +172,7 @@
         :rtype: None
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/aio/operations/_messages_operations.py
 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/aio/operations/_messages_operations.py
--- 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/aio/operations/_messages_operations.py
       2024-05-08 20:26:27.000000000 +0200
+++ 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/aio/operations/_messages_operations.py
       2024-07-18 21:52:56.000000000 +0200
@@ -6,7 +6,8 @@
 # Code generated by Microsoft (R) AutoRest Code Generator.
 # Changes may cause incorrect behavior and will be lost if the code is 
regenerated.
 # --------------------------------------------------------------------------
-from typing import Any, Callable, Dict, List, Literal, Optional, TypeVar
+import sys
+from typing import Any, Callable, Dict, List, Literal, Optional, Type, TypeVar
 
 from azure.core.exceptions import (
     ClientAuthenticationError,
@@ -31,6 +32,10 @@
     build_peek_request,
 )
 
+if sys.version_info >= (3, 9):
+    from collections.abc import MutableMapping
+else:
+    from typing import MutableMapping  # type: ignore  # pylint: 
disable=ungrouped-imports
 T = TypeVar("T")
 ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], 
T, Dict[str, Any]], Any]]
 
@@ -88,7 +93,7 @@
         :rtype: list[~azure.storage.queue.models.DequeuedMessageItem]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
@@ -156,7 +161,7 @@
         :rtype: None
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
@@ -243,7 +248,7 @@
         :rtype: list[~azure.storage.queue.models.EnqueuedMessage]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
@@ -326,7 +331,7 @@
         :rtype: list[~azure.storage.queue.models.PeekedMessageItem]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/aio/operations/_patch.py
 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/aio/operations/_patch.py
--- 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/aio/operations/_patch.py
     2024-05-08 20:26:27.000000000 +0200
+++ 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/aio/operations/_patch.py
     2024-07-18 21:52:56.000000000 +0200
@@ -2,6 +2,8 @@
 # Copyright (c) Microsoft Corporation.
 # Licensed under the MIT License.
 # ------------------------------------
+
+
 """Customize generated code here.
 
 Follow our quickstart for examples: 
https://aka.ms/azsdk/python/dpcodegen/python/customize
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/aio/operations/_queue_operations.py
 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/aio/operations/_queue_operations.py
--- 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/aio/operations/_queue_operations.py
  2024-05-08 20:26:27.000000000 +0200
+++ 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/aio/operations/_queue_operations.py
  2024-07-18 21:52:56.000000000 +0200
@@ -6,7 +6,8 @@
 # Code generated by Microsoft (R) AutoRest Code Generator.
 # Changes may cause incorrect behavior and will be lost if the code is 
regenerated.
 # --------------------------------------------------------------------------
-from typing import Any, Callable, Dict, List, Literal, Optional, TypeVar
+import sys
+from typing import Any, Callable, Dict, List, Literal, Optional, Type, TypeVar
 
 from azure.core.exceptions import (
     ClientAuthenticationError,
@@ -33,6 +34,10 @@
     build_set_metadata_request,
 )
 
+if sys.version_info >= (3, 9):
+    from collections.abc import MutableMapping
+else:
+    from typing import MutableMapping  # type: ignore  # pylint: 
disable=ungrouped-imports
 T = TypeVar("T")
 ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], 
T, Dict[str, Any]], Any]]
 
@@ -84,7 +89,7 @@
         :rtype: None
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
@@ -153,7 +158,7 @@
         :rtype: None
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
@@ -216,7 +221,7 @@
         :rtype: None
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
@@ -295,7 +300,7 @@
         :rtype: None
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
@@ -361,7 +366,7 @@
         :rtype: list[~azure.storage.queue.models.SignedIdentifier]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
@@ -435,7 +440,7 @@
         :rtype: None
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/aio/operations/_service_operations.py
 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/aio/operations/_service_operations.py
--- 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/aio/operations/_service_operations.py
        2024-05-08 20:26:27.000000000 +0200
+++ 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/aio/operations/_service_operations.py
        2024-07-18 21:52:56.000000000 +0200
@@ -6,7 +6,8 @@
 # Code generated by Microsoft (R) AutoRest Code Generator.
 # Changes may cause incorrect behavior and will be lost if the code is 
regenerated.
 # --------------------------------------------------------------------------
-from typing import Any, Callable, Dict, List, Literal, Optional, TypeVar
+import sys
+from typing import Any, Callable, Dict, List, Literal, Optional, Type, TypeVar
 
 from azure.core.exceptions import (
     ClientAuthenticationError,
@@ -31,6 +32,10 @@
     build_set_properties_request,
 )
 
+if sys.version_info >= (3, 9):
+    from collections.abc import MutableMapping
+else:
+    from typing import MutableMapping  # type: ignore  # pylint: 
disable=ungrouped-imports
 T = TypeVar("T")
 ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], 
T, Dict[str, Any]], Any]]
 
@@ -79,7 +84,7 @@
         :rtype: None
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
@@ -150,7 +155,7 @@
         :rtype: ~azure.storage.queue.models.StorageServiceProperties
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
@@ -221,7 +226,7 @@
         :rtype: ~azure.storage.queue.models.StorageServiceStats
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
@@ -318,7 +323,7 @@
         :rtype: ~azure.storage.queue.models.ListQueuesSegmentResponse
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/models/_patch.py 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/models/_patch.py
--- 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/models/_patch.py 
    2024-05-08 20:26:27.000000000 +0200
+++ 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/models/_patch.py 
    2024-07-18 21:52:56.000000000 +0200
@@ -2,6 +2,8 @@
 # Copyright (c) Microsoft Corporation.
 # Licensed under the MIT License.
 # ------------------------------------
+
+
 """Customize generated code here.
 
 Follow our quickstart for examples: 
https://aka.ms/azsdk/python/dpcodegen/python/customize
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/operations/_message_id_operations.py
 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/operations/_message_id_operations.py
--- 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/operations/_message_id_operations.py
 2024-05-08 20:26:27.000000000 +0200
+++ 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/operations/_message_id_operations.py
 2024-07-18 21:52:56.000000000 +0200
@@ -6,7 +6,8 @@
 # Code generated by Microsoft (R) AutoRest Code Generator.
 # Changes may cause incorrect behavior and will be lost if the code is 
regenerated.
 # --------------------------------------------------------------------------
-from typing import Any, Callable, Dict, Literal, Optional, TypeVar
+import sys
+from typing import Any, Callable, Dict, Literal, Optional, Type, TypeVar
 
 from azure.core.exceptions import (
     ClientAuthenticationError,
@@ -26,6 +27,10 @@
 from .._serialization import Serializer
 from .._vendor import _convert_request
 
+if sys.version_info >= (3, 9):
+    from collections.abc import MutableMapping
+else:
+    from typing import MutableMapping  # type: ignore  # pylint: 
disable=ungrouped-imports
 T = TypeVar("T")
 ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, 
Dict[str, Any]], Any]]
 
@@ -171,7 +176,7 @@
         :rtype: None
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
@@ -250,7 +255,7 @@
         :rtype: None
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/operations/_messages_operations.py
 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/operations/_messages_operations.py
--- 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/operations/_messages_operations.py
   2024-05-08 20:26:27.000000000 +0200
+++ 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/operations/_messages_operations.py
   2024-07-18 21:52:56.000000000 +0200
@@ -6,7 +6,8 @@
 # Code generated by Microsoft (R) AutoRest Code Generator.
 # Changes may cause incorrect behavior and will be lost if the code is 
regenerated.
 # --------------------------------------------------------------------------
-from typing import Any, Callable, Dict, List, Literal, Optional, TypeVar
+import sys
+from typing import Any, Callable, Dict, List, Literal, Optional, Type, TypeVar
 
 from azure.core.exceptions import (
     ClientAuthenticationError,
@@ -26,6 +27,10 @@
 from .._serialization import Serializer
 from .._vendor import _convert_request
 
+if sys.version_info >= (3, 9):
+    from collections.abc import MutableMapping
+else:
+    from typing import MutableMapping  # type: ignore  # pylint: 
disable=ungrouped-imports
 T = TypeVar("T")
 ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, 
Dict[str, Any]], Any]]
 
@@ -243,7 +248,7 @@
         :rtype: list[~azure.storage.queue.models.DequeuedMessageItem]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
@@ -311,7 +316,7 @@
         :rtype: None
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
@@ -398,7 +403,7 @@
         :rtype: list[~azure.storage.queue.models.EnqueuedMessage]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
@@ -481,7 +486,7 @@
         :rtype: list[~azure.storage.queue.models.PeekedMessageItem]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/operations/_patch.py
 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/operations/_patch.py
--- 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/operations/_patch.py
 2024-05-08 20:26:27.000000000 +0200
+++ 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/operations/_patch.py
 2024-07-18 21:52:56.000000000 +0200
@@ -2,6 +2,8 @@
 # Copyright (c) Microsoft Corporation.
 # Licensed under the MIT License.
 # ------------------------------------
+
+
 """Customize generated code here.
 
 Follow our quickstart for examples: 
https://aka.ms/azsdk/python/dpcodegen/python/customize
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/operations/_queue_operations.py
 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/operations/_queue_operations.py
--- 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/operations/_queue_operations.py
      2024-05-08 20:26:27.000000000 +0200
+++ 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/operations/_queue_operations.py
      2024-07-18 21:52:56.000000000 +0200
@@ -6,7 +6,8 @@
 # Code generated by Microsoft (R) AutoRest Code Generator.
 # Changes may cause incorrect behavior and will be lost if the code is 
regenerated.
 # --------------------------------------------------------------------------
-from typing import Any, Callable, Dict, List, Literal, Optional, TypeVar
+import sys
+from typing import Any, Callable, Dict, List, Literal, Optional, Type, TypeVar
 
 from azure.core.exceptions import (
     ClientAuthenticationError,
@@ -26,6 +27,10 @@
 from .._serialization import Serializer
 from .._vendor import _convert_request
 
+if sys.version_info >= (3, 9):
+    from collections.abc import MutableMapping
+else:
+    from typing import MutableMapping  # type: ignore  # pylint: 
disable=ungrouped-imports
 T = TypeVar("T")
 ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, 
Dict[str, Any]], Any]]
 
@@ -290,7 +295,7 @@
         :rtype: None
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
@@ -359,7 +364,7 @@
         :rtype: None
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
@@ -422,7 +427,7 @@
         :rtype: None
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
@@ -501,7 +506,7 @@
         :rtype: None
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
@@ -567,7 +572,7 @@
         :rtype: list[~azure.storage.queue.models.SignedIdentifier]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
@@ -641,7 +646,7 @@
         :rtype: None
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/operations/_service_operations.py
 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/operations/_service_operations.py
--- 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/operations/_service_operations.py
    2024-05-08 20:26:27.000000000 +0200
+++ 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/operations/_service_operations.py
    2024-07-18 21:52:56.000000000 +0200
@@ -6,7 +6,8 @@
 # Code generated by Microsoft (R) AutoRest Code Generator.
 # Changes may cause incorrect behavior and will be lost if the code is 
regenerated.
 # --------------------------------------------------------------------------
-from typing import Any, Callable, Dict, List, Literal, Optional, TypeVar
+import sys
+from typing import Any, Callable, Dict, List, Literal, Optional, Type, TypeVar
 
 from azure.core.exceptions import (
     ClientAuthenticationError,
@@ -26,6 +27,10 @@
 from .._serialization import Serializer
 from .._vendor import _convert_request
 
+if sys.version_info >= (3, 9):
+    from collections.abc import MutableMapping
+else:
+    from typing import MutableMapping  # type: ignore  # pylint: 
disable=ungrouped-imports
 T = TypeVar("T")
 ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, 
Dict[str, Any]], Any]]
 
@@ -230,7 +235,7 @@
         :rtype: None
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
@@ -301,7 +306,7 @@
         :rtype: ~azure.storage.queue.models.StorageServiceProperties
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
@@ -372,7 +377,7 @@
         :rtype: ~azure.storage.queue.models.StorageServiceStats
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
@@ -469,7 +474,7 @@
         :rtype: ~azure.storage.queue.models.ListQueuesSegmentResponse
         :raises ~azure.core.exceptions.HttpResponseError:
         """
-        error_map = {
+        error_map: MutableMapping[int, Type[HttpResponseError]] = {
             401: ClientAuthenticationError,
             404: ResourceNotFoundError,
             409: ResourceExistsError,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/py.typed 
new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/py.typed
--- old/azure-storage-queue-12.10.0/azure/storage/queue/_generated/py.typed     
1970-01-01 01:00:00.000000000 +0100
+++ new/azure-storage-queue-12.11.0/azure/storage/queue/_generated/py.typed     
2024-07-18 21:52:56.000000000 +0200
@@ -0,0 +1 @@
+# Marker file for PEP 561.
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/azure/storage/queue/_serialize.py 
new/azure-storage-queue-12.11.0/azure/storage/queue/_serialize.py
--- old/azure-storage-queue-12.10.0/azure/storage/queue/_serialize.py   
2024-05-08 20:26:27.000000000 +0200
+++ new/azure-storage-queue-12.11.0/azure/storage/queue/_serialize.py   
2024-07-18 21:52:56.000000000 +0200
@@ -15,7 +15,19 @@
     '2020-06-12',
     '2020-08-04',
     '2020-10-02',
+    '2020-12-06',
     '2021-02-12',
+    '2021-04-10',
+    '2021-06-08',
+    '2021-08-06',
+    '2021-12-02',
+    '2022-11-02',
+    '2023-01-03',
+    '2023-05-03',
+    '2023-08-03',
+    '2023-11-03',
+    '2024-05-04',
+    '2024-08-04',
 ]
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/azure/storage/queue/_shared/authentication.py 
new/azure-storage-queue-12.11.0/azure/storage/queue/_shared/authentication.py
--- 
old/azure-storage-queue-12.10.0/azure/storage/queue/_shared/authentication.py   
    2024-05-08 20:26:27.000000000 +0200
+++ 
new/azure-storage-queue-12.11.0/azure/storage/queue/_shared/authentication.py   
    2024-07-18 21:52:56.000000000 +0200
@@ -8,6 +8,7 @@
 import re
 from typing import List, Tuple
 from urllib.parse import unquote, urlparse
+from functools import cmp_to_key
 
 try:
     from yarl import URL
@@ -27,6 +28,66 @@
 logger = logging.getLogger(__name__)
 
 
+table_lv0 = [
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x71c, 0x0, 0x71f, 0x721, 0x723, 0x725,
+    0x0, 0x0, 0x0, 0x72d, 0x803, 0x0, 0x0, 0x733, 0x0, 0xd03, 0xd1a, 0xd1c, 
0xd1e,
+    0xd20, 0xd22, 0xd24, 0xd26, 0xd28, 0xd2a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
0x0,
+    0xe02, 0xe09, 0xe0a, 0xe1a, 0xe21, 0xe23, 0xe25, 0xe2c, 0xe32, 0xe35, 
0xe36, 0xe48, 0xe51,
+    0xe70, 0xe7c, 0xe7e, 0xe89, 0xe8a, 0xe91, 0xe99, 0xe9f, 0xea2, 0xea4, 
0xea6, 0xea7, 0xea9,
+    0x0, 0x0, 0x0, 0x743, 0x744, 0x748, 0xe02, 0xe09, 0xe0a, 0xe1a, 0xe21, 
0xe23, 0xe25,
+    0xe2c, 0xe32, 0xe35, 0xe36, 0xe48, 0xe51, 0xe70, 0xe7c, 0xe7e, 0xe89, 
0xe8a, 0xe91, 0xe99,
+    0xe9f, 0xea2, 0xea4, 0xea6, 0xea7, 0xea9, 0x0, 0x74c, 0x0, 0x750, 0x0,
+]
+
+table_lv4 = [
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8012, 0x0, 0x0, 0x0, 0x0, 0x0, 
0x8212, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
0x0,
+]
+
+def compare(lhs: str, rhs: str) -> int:  # 
pylint:disable=too-many-return-statements
+    tables = [table_lv0, table_lv4]
+    curr_level, i, j, n = 0, 0, 0, len(tables)
+    lhs_len = len(lhs)
+    rhs_len = len(rhs)
+    while curr_level < n:
+        if curr_level == (n - 1) and i != j:
+            if i > j:
+                return -1
+            if i < j:
+                return 1
+            return 0
+
+        w1 = tables[curr_level][ord(lhs[i])] if i < lhs_len else 0x1
+        w2 = tables[curr_level][ord(rhs[j])] if j < rhs_len else 0x1
+
+        if w1 == 0x1 and w2 == 0x1:
+            i = 0
+            j = 0
+            curr_level += 1
+        elif w1 == w2:
+            i += 1
+            j += 1
+        elif w1 == 0:
+            i += 1
+        elif w2 == 0:
+            j += 1
+        else:
+            if w1 < w2:
+                return -1
+            if w1 > w2:
+                return 1
+            return 0
+    return 0
+
+
 # wraps a given exception with the desired exception type
 def _wrap_exception(ex, desired_type):
     msg = ""
@@ -36,8 +97,6 @@
 
 # This method attempts to emulate the sorting done by the service
 def _storage_header_sort(input_headers: List[Tuple[str, str]]) -> 
List[Tuple[str, str]]:
-    # Define the custom alphabet for weights
-    custom_weights = 
"-!#$%&*.^_|~+\"\'(),/`~0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]abcdefghijklmnopqrstuvwxyz{}"
 
     # Build dict of tuples and list of keys
     header_dict = {}
@@ -46,9 +105,8 @@
         header_dict[k] = v
         header_keys.append(k)
 
-    # Sort according to custom defined weights
     try:
-        header_keys = sorted(header_keys, key=lambda word: 
[custom_weights.index(c) for c in word])
+        header_keys = sorted(header_keys, key=cmp_to_key(compare))
     except ValueError as exc:
         raise ValueError("Illegal character encountered when sorting 
headers.") from exc
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/azure/storage/queue/_shared/base_client.py 
new/azure-storage-queue-12.11.0/azure/storage/queue/_shared/base_client.py
--- old/azure-storage-queue-12.10.0/azure/storage/queue/_shared/base_client.py  
2024-05-08 20:26:27.000000000 +0200
+++ new/azure-storage-queue-12.11.0/azure/storage/queue/_shared/base_client.py  
2024-07-18 21:52:56.000000000 +0200
@@ -23,7 +23,6 @@
 from azure.core.pipeline.transport import HttpTransport, RequestsTransport  # 
pylint: disable=non-abstract-transport-import, no-name-in-module
 from azure.core.pipeline.policies import (
     AzureSasCredentialPolicy,
-    BearerTokenCredentialPolicy,
     ContentDecodePolicy,
     DistributedTracingPolicy,
     HttpLoggingPolicy,
@@ -38,6 +37,7 @@
 from .policies import (
     ExponentialRetry,
     QueueMessagePolicy,
+    StorageBearerTokenCredentialPolicy,
     StorageContentValidation,
     StorageHeadersPolicy,
     StorageHosts,
@@ -231,7 +231,7 @@
                 audience = str(kwargs.pop('audience')).rstrip('/') + 
DEFAULT_OAUTH_SCOPE
             else:
                 audience = STORAGE_OAUTH_SCOPE
-            self._credential_policy = 
BearerTokenCredentialPolicy(cast(TokenCredential, credential), audience)
+            self._credential_policy = 
StorageBearerTokenCredentialPolicy(cast(TokenCredential, credential), audience)
         elif isinstance(credential, SharedKeyCredentialPolicy):
             self._credential_policy = credential
         elif isinstance(credential, AzureSasCredential):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/azure/storage/queue/_shared/base_client_async.py
 
new/azure-storage-queue-12.11.0/azure/storage/queue/_shared/base_client_async.py
--- 
old/azure-storage-queue-12.10.0/azure/storage/queue/_shared/base_client_async.py
    2024-05-08 20:26:27.000000000 +0200
+++ 
new/azure-storage-queue-12.11.0/azure/storage/queue/_shared/base_client_async.py
    2024-07-18 21:52:56.000000000 +0200
@@ -14,7 +14,6 @@
 from azure.core.exceptions import HttpResponseError
 from azure.core.pipeline import AsyncPipeline
 from azure.core.pipeline.policies import (
-    AsyncBearerTokenCredentialPolicy,
     AsyncRedirectPolicy,
     AzureSasCredentialPolicy,
     ContentDecodePolicy,
@@ -34,7 +33,7 @@
     StorageHosts,
     StorageRequestHook,
 )
-from .policies_async import AsyncStorageResponseHook
+from .policies_async import AsyncStorageBearerTokenCredentialPolicy, 
AsyncStorageResponseHook
 from .response_handlers import PartialBatchErrorException, 
process_storage_error
 from .._shared_access_signature import _is_credential_sastoken
 
@@ -97,7 +96,7 @@
         **kwargs: Any
     ) -> Tuple[StorageConfiguration, AsyncPipeline]:
         self._credential_policy: Optional[
-            Union[AsyncBearerTokenCredentialPolicy,
+            Union[AsyncStorageBearerTokenCredentialPolicy,
             SharedKeyCredentialPolicy,
             AzureSasCredentialPolicy]] = None
         if hasattr(credential, 'get_token'):
@@ -105,7 +104,8 @@
                 audience = str(kwargs.pop('audience')).rstrip('/') + 
DEFAULT_OAUTH_SCOPE
             else:
                 audience = STORAGE_OAUTH_SCOPE
-            self._credential_policy = 
AsyncBearerTokenCredentialPolicy(cast(AsyncTokenCredential, credential), 
audience)
+            self._credential_policy = AsyncStorageBearerTokenCredentialPolicy(
+                                        cast(AsyncTokenCredential, 
credential), audience)
         elif isinstance(credential, SharedKeyCredentialPolicy):
             self._credential_policy = credential
         elif isinstance(credential, AzureSasCredential):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/azure/storage/queue/_version.py 
new/azure-storage-queue-12.11.0/azure/storage/queue/_version.py
--- old/azure-storage-queue-12.10.0/azure/storage/queue/_version.py     
2024-05-08 20:26:27.000000000 +0200
+++ new/azure-storage-queue-12.11.0/azure/storage/queue/_version.py     
2024-07-18 21:52:56.000000000 +0200
@@ -4,4 +4,4 @@
 # license information.
 # --------------------------------------------------------------------------
 
-VERSION = "12.10.0"
+VERSION = "12.11.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/azure_storage_queue.egg-info/PKG-INFO 
new/azure-storage-queue-12.11.0/azure_storage_queue.egg-info/PKG-INFO
--- old/azure-storage-queue-12.10.0/azure_storage_queue.egg-info/PKG-INFO       
2024-05-08 20:42:33.000000000 +0200
+++ new/azure-storage-queue-12.11.0/azure_storage_queue.egg-info/PKG-INFO       
2024-07-18 22:10:57.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: azure-storage-queue
-Version: 12.10.0
+Version: 12.11.0
 Summary: Microsoft Azure Azure Queue Storage Client Library for Python
 Home-page: 
https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/storage/azure-storage-queue
 Author: Microsoft Corporation
@@ -19,8 +19,13 @@
 Classifier: License :: OSI Approved :: MIT License
 Requires-Python: >=3.8
 Description-Content-Type: text/markdown
-Provides-Extra: aio
 License-File: LICENSE
+Requires-Dist: azure-core>=1.28.0
+Requires-Dist: cryptography>=2.1.4
+Requires-Dist: typing-extensions>=4.6.0
+Requires-Dist: isodate>=0.6.1
+Provides-Extra: aio
+Requires-Dist: azure-core[aio]>=1.28.0; extra == "aio"
 
 # Azure Storage Queues client library for Python
 
@@ -429,6 +434,17 @@
 
 # Release History
 
+## 12.11.0 (2024-07-17)
+
+### Features Added
+- Stable release of features from 12.11.0b1
+
+## 12.11.0b1 (2024-06-11)
+
+### Features Added
+- Updated OAuth implementation to use the AAD scope returned in a Bearer 
challenge.
+- Fixed an issue where client specified service versions may be ignored.
+
 ## 12.10.0 (2024-05-07)
 
 ### Features Added
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/azure_storage_queue.egg-info/SOURCES.txt 
new/azure-storage-queue-12.11.0/azure_storage_queue.egg-info/SOURCES.txt
--- old/azure-storage-queue-12.10.0/azure_storage_queue.egg-info/SOURCES.txt    
2024-05-08 20:42:33.000000000 +0200
+++ new/azure-storage-queue-12.11.0/azure_storage_queue.egg-info/SOURCES.txt    
2024-07-18 22:10:57.000000000 +0200
@@ -26,6 +26,7 @@
 azure/storage/queue/_generated/_patch.py
 azure/storage/queue/_generated/_serialization.py
 azure/storage/queue/_generated/_vendor.py
+azure/storage/queue/_generated/py.typed
 azure/storage/queue/_generated/aio/__init__.py
 azure/storage/queue/_generated/aio/_azure_queue_storage.py
 azure/storage/queue/_generated/aio/_configuration.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure-storage-queue-12.10.0/pyproject.toml 
new/azure-storage-queue-12.11.0/pyproject.toml
--- old/azure-storage-queue-12.10.0/pyproject.toml      2024-05-08 
20:26:27.000000000 +0200
+++ new/azure-storage-queue-12.11.0/pyproject.toml      2024-07-18 
21:52:56.000000000 +0200
@@ -3,4 +3,3 @@
 pyright = false
 type_check_samples = true
 verifytypes = true
-strict_sphinx = true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/tests/settings/settings_fake.py 
new/azure-storage-queue-12.11.0/tests/settings/settings_fake.py
--- old/azure-storage-queue-12.10.0/tests/settings/settings_fake.py     
2024-05-08 20:26:27.000000000 +0200
+++ new/azure-storage-queue-12.11.0/tests/settings/settings_fake.py     
2024-07-18 21:52:56.000000000 +0200
@@ -7,10 +7,6 @@
 STORAGE_ACCOUNT_NAME = "fakename"
 STORAGE_ACCOUNT_KEY = "fakekey"
 
-TENANT_ID = "00000000-0000-0000-0000-000000000000"
-CLIENT_ID = "00000000-0000-0000-0000-000000000000"
-CLIENT_SECRET = "00000000-0000-0000-0000-000000000000"
-
 ACCOUNT_URL_SUFFIX = 'core.windows.net'
 RUN_IN_LIVE = "False"
 SKIP_LIVE_RECORDING = "True"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/tests/settings/testcase.py 
new/azure-storage-queue-12.11.0/tests/settings/testcase.py
--- old/azure-storage-queue-12.10.0/tests/settings/testcase.py  2024-05-08 
20:26:27.000000000 +0200
+++ new/azure-storage-queue-12.11.0/tests/settings/testcase.py  2024-07-18 
21:52:56.000000000 +0200
@@ -38,9 +38,6 @@
 os.environ['PROTOCOL'] = PROTOCOL
 os.environ['ACCOUNT_URL_SUFFIX'] = ACCOUNT_URL_SUFFIX
 
-os.environ['STORAGE_TENANT_ID'] = os.environ.get('STORAGE_TENANT_ID', None) or 
TENANT_ID
-os.environ['STORAGE_CLIENT_ID'] = os.environ.get('STORAGE_CLIENT_ID', None) or 
CLIENT_ID
-os.environ['STORAGE_CLIENT_SECRET'] = os.environ.get('STORAGE_CLIENT_SECRET', 
None) or CLIENT_SECRET
 
 QueuePreparer = functools.partial(
     PowerShellPreparer, "storage",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure-storage-queue-12.10.0/tests/test_queue.py 
new/azure-storage-queue-12.11.0/tests/test_queue.py
--- old/azure-storage-queue-12.10.0/tests/test_queue.py 2024-05-08 
20:26:27.000000000 +0200
+++ new/azure-storage-queue-12.11.0/tests/test_queue.py 2024-07-18 
21:52:56.000000000 +0200
@@ -27,7 +27,7 @@
     ResourceTypes
 )
 
-from devtools_testutils import recorded_by_proxy
+from devtools_testutils import FakeTokenCredential, recorded_by_proxy
 from devtools_testutils.storage import StorageRecordedTestCase
 from settings.testcase import QueuePreparer
 
@@ -877,7 +877,7 @@
         storage_account_name = kwargs.pop("storage_account_name")
         storage_account_key = kwargs.pop("storage_account_key")
 
-        token_credential = self.generate_oauth_token()
+        token_credential = self.get_credential(QueueServiceClient)
 
         # Action 1: make sure token works
         service = QueueServiceClient(self.account_url(storage_account_name, 
"queue"), credential=token_credential)
@@ -885,7 +885,7 @@
         assert queues is not None
 
         # Action 2: change token value to make request fail
-        fake_credential = self.generate_fake_token()
+        fake_credential = FakeTokenCredential()
         service = QueueServiceClient(self.account_url(storage_account_name, 
"queue"), credential=fake_credential)
         with pytest.raises(ClientAuthenticationError):
             list(service.list_queues())
@@ -1360,7 +1360,7 @@
         qsc.get_service_properties()
 
         # Act
-        token_credential = self.generate_oauth_token()
+        token_credential = self.get_credential(QueueServiceClient)
         qsc = QueueServiceClient(
             self.account_url(storage_account_name, "queue"), 
credential=token_credential,
             audience=f'https://{storage_account_name}.queue.core.windows.net'
@@ -1381,15 +1381,14 @@
         qsc.get_service_properties()
 
         # Act
-        token_credential = self.generate_oauth_token()
+        token_credential = self.get_credential(QueueServiceClient)
         qsc = QueueServiceClient(
             self.account_url(storage_account_name, "queue"), 
credential=token_credential,
             audience=f'https://badaudience.queue.core.windows.net'
         )
 
-        # Assert
-        with pytest.raises(ClientAuthenticationError):
-            qsc.get_service_properties()
+        # Will not raise ClientAuthenticationError despite bad audience due to 
Bearer Challenge
+        qsc.get_service_properties()
 
     @QueuePreparer()
     @recorded_by_proxy
@@ -1402,7 +1401,7 @@
         queue.create_queue()
 
         # Act
-        token_credential = self.generate_oauth_token()
+        token_credential = self.get_credential(QueueServiceClient)
         queue = QueueClient(
             self.account_url(storage_account_name, "queue"), 'testqueue1', 
credential=token_credential,
             audience=f'https://{storage_account_name}.queue.core.windows.net'
@@ -1423,15 +1422,14 @@
         queue.create_queue()
 
         # Act
-        token_credential = self.generate_oauth_token()
+        token_credential = self.get_credential(QueueServiceClient)
         queue = QueueClient(
             self.account_url(storage_account_name, "queue"), 'testqueue2', 
credential=token_credential,
             audience=f'https://badaudience.queue.core.windows.net'
         )
 
-        # Assert
-        with pytest.raises(ClientAuthenticationError):
-            queue.get_queue_properties()
+        # Will not raise ClientAuthenticationError despite bad audience due to 
Bearer Challenge
+        queue.get_queue_properties()
 
 
 # 
------------------------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/tests/test_queue_async.py 
new/azure-storage-queue-12.11.0/tests/test_queue_async.py
--- old/azure-storage-queue-12.10.0/tests/test_queue_async.py   2024-05-08 
20:26:27.000000000 +0200
+++ new/azure-storage-queue-12.11.0/tests/test_queue_async.py   2024-07-18 
21:52:56.000000000 +0200
@@ -26,6 +26,7 @@
 )
 from azure.storage.queue.aio import QueueClient, QueueServiceClient
 
+from devtools_testutils.fake_credentials_async import AsyncFakeCredential
 from devtools_testutils.aio import recorded_by_proxy_async
 from devtools_testutils.storage.aio import AsyncStorageRecordedTestCase
 from settings.testcase import QueuePreparer
@@ -895,7 +896,7 @@
         storage_account_key = kwargs.pop("storage_account_key")
 
         qsc = QueueServiceClient(self.account_url(storage_account_name, 
"queue"), storage_account_key)
-        token_credential = self.generate_oauth_token()
+        token_credential = self.get_credential(QueueServiceClient, 
is_async=True)
 
         # Action 1: make sure token works
         service = QueueServiceClient(
@@ -905,7 +906,7 @@
         assert queues is not None
 
         # Action 2: change token value to make request fail
-        fake_credential = self.generate_fake_token()
+        fake_credential = AsyncFakeCredential()
         service = QueueServiceClient(
             self.account_url(storage_account_name, "queue"),
             credential=fake_credential)
@@ -1390,7 +1391,7 @@
         await qsc.get_service_properties()
 
         # Act
-        token_credential = self.generate_oauth_token()
+        token_credential = self.get_credential(QueueServiceClient, 
is_async=True)
         qsc = QueueServiceClient(
             self.account_url(storage_account_name, "queue"), 
credential=token_credential,
             audience=f'https://{storage_account_name}.queue.core.windows.net'
@@ -1411,15 +1412,14 @@
         await qsc.get_service_properties()
 
         # Act
-        token_credential = self.generate_oauth_token()
+        token_credential = self.get_credential(QueueServiceClient, 
is_async=True)
         qsc = QueueServiceClient(
             self.account_url(storage_account_name, "queue"), 
credential=token_credential,
             audience=f'https://badaudience.queue.core.windows.net'
         )
 
-        # Assert
-        with pytest.raises(ClientAuthenticationError):
-            await qsc.get_service_properties()
+        # Will not raise ClientAuthenticationError despite bad audience due to 
Bearer Challenge
+        await qsc.get_service_properties()
 
     @QueuePreparer()
     @recorded_by_proxy_async
@@ -1433,7 +1433,7 @@
         await queue.create_queue()
 
         # Act
-        token_credential = self.generate_oauth_token()
+        token_credential = self.get_credential(QueueServiceClient, 
is_async=True)
         queue = QueueClient(
             self.account_url(storage_account_name, "queue"), queue_name, 
credential=token_credential,
             audience=f'https://{storage_account_name}.queue.core.windows.net'
@@ -1455,15 +1455,14 @@
         await queue.create_queue()
 
         # Act
-        token_credential = self.generate_oauth_token()
+        token_credential = self.get_credential(QueueServiceClient, 
is_async=True)
         queue = QueueClient(
             self.account_url(storage_account_name, "queue"), queue_name, 
credential=token_credential,
             audience=f'https://badaudience.queue.core.windows.net'
         )
 
-        # Assert
-        with pytest.raises(ClientAuthenticationError):
-            await queue.get_queue_properties()
+        # Will not raise ClientAuthenticationError despite bad audience due to 
Bearer Challenge
+        await queue.get_queue_properties()
 
 # 
------------------------------------------------------------------------------
 if __name__ == '__main__':
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/tests/test_queue_client.py 
new/azure-storage-queue-12.11.0/tests/test_queue_client.py
--- old/azure-storage-queue-12.10.0/tests/test_queue_client.py  2024-05-08 
20:26:27.000000000 +0200
+++ new/azure-storage-queue-12.11.0/tests/test_queue_client.py  2024-07-18 
21:52:56.000000000 +0200
@@ -34,7 +34,7 @@
 class TestStorageQueueClient(StorageRecordedTestCase):
     def setUp(self):
         self.sas_token = self.generate_fake_sas_token()
-        self.token_credential = self.generate_oauth_token()
+        self.token_credential = self.get_credential(QueueServiceClient)
 
     # 
--Helpers-----------------------------------------------------------------
     def validate_standard_account_endpoints(self, service, url_type, 
account_name, account_key):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-storage-queue-12.10.0/tests/test_queue_client_async.py 
new/azure-storage-queue-12.11.0/tests/test_queue_client_async.py
--- old/azure-storage-queue-12.10.0/tests/test_queue_client_async.py    
2024-05-08 20:26:27.000000000 +0200
+++ new/azure-storage-queue-12.11.0/tests/test_queue_client_async.py    
2024-07-18 21:52:56.000000000 +0200
@@ -28,7 +28,7 @@
 class TestAsyncStorageQueueClient(AsyncStorageRecordedTestCase):
     def setUp(self):
         self.sas_token = self.generate_fake_sas_token()
-        self.token_credential = self.generate_oauth_token()
+        self.token_credential = self.get_credential(QueueServiceClient, 
is_async=True)
 
     # 
--Helpers-----------------------------------------------------------------
     def validate_standard_account_endpoints(self, service, url_type, 
storage_account_name, storage_account_key):

Reply via email to