Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-azure-storage-file-share for 
openSUSE:Factory checked in at 2026-05-15 23:56:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-azure-storage-file-share (Old)
 and      /work/SRC/openSUSE:Factory/.python-azure-storage-file-share.new.1966 
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-azure-storage-file-share"

Fri May 15 23:56:12 2026 rev:35 rq:1353390 version:12.25.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-azure-storage-file-share/python-azure-storage-file-share.changes
  2026-05-05 17:58:15.506938707 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-azure-storage-file-share.new.1966/python-azure-storage-file-share.changes
        2026-05-15 23:58:13.936771877 +0200
@@ -1,0 +2,9 @@
+Fri May 15 09:41:20 UTC 2026 - John Paul Adrian Glaubitz 
<[email protected]>
+
+- New upstream release
+  + Version 12.25.0
+  + For detailed information about changes see the
+    CHANGELOG.md file provided with this package
+- Remove temporary version override
+
+-------------------------------------------------------------------

Old:
----
  azure_storage_file_share-12.25.0b1.tar.gz

New:
----
  azure_storage_file_share-12.25.0.tar.gz

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

Other differences:
------------------
++++++ python-azure-storage-file-share.spec ++++++
--- /var/tmp/diff_new_pack.L3lKHT/_old  2026-05-15 23:58:15.020816501 +0200
+++ /var/tmp/diff_new_pack.L3lKHT/_new  2026-05-15 23:58:15.020816501 +0200
@@ -16,17 +16,15 @@
 #
 
 
-%define realversion 12.25.0b1
-
 %{?sle15_python_module_pythons}
 Name:           python-azure-storage-file-share
-Version:        12.25.0~b1
+Version:        12.25.0
 Release:        0
 Summary:        Azure Storage File Share client library for Python
 License:        MIT
 Group:          Development/Languages/Python
 URL:            https://github.com/Azure/azure-sdk-for-python
-Source:         
https://files.pythonhosted.org/packages/source/a/azure_storage_file_share/azure_storage_file_share-%{realversion}.tar.gz
+Source:         
https://files.pythonhosted.org/packages/source/a/azure_storage_file_share/azure_storage_file_share-%{version}.tar.gz
 BuildRequires:  %{python_module azure-nspkg >= 3.0.0}
 BuildRequires:  %{python_module azure-storage-nspkg >= 3.0.0}
 BuildRequires:  %{python_module pip}
@@ -63,7 +61,7 @@
    diagnostic share, and Dev/Test/Debug tools
 
 %prep
-%setup -q -n azure_storage_file_share-%{realversion}
+%setup -q -n azure_storage_file_share-%{version}
 
 %build
 %pyproject_wheel

++++++ azure_storage_file_share-12.25.0b1.tar.gz -> 
azure_storage_file_share-12.25.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure_storage_file_share-12.25.0b1/CHANGELOG.md 
new/azure_storage_file_share-12.25.0/CHANGELOG.md
--- old/azure_storage_file_share-12.25.0b1/CHANGELOG.md 2026-01-27 
15:11:20.000000000 +0100
+++ new/azure_storage_file_share-12.25.0/CHANGELOG.md   2026-05-15 
02:57:20.000000000 +0200
@@ -1,5 +1,29 @@
 # Release History
 
+## 12.25.0 (2026-05-14)
+
+### Features Added
+- Stable release of features from 12.25.0b1
+
+### Bugs Fixed
+- Fixed various issues with configuring logging via `logging_enable` and 
`logging_body` keywords on a per-request
+basis and with retries. Prior to this fix logging may have not behaved as 
expected, especially on retries.
+- Fix a potential memory leak caused by improper exception handling that could 
occur under rare circumstances.
+
+## 12.26.0b1 (2026-04-01)
+
+### Features Added
+- Added support for service version 2026-06-06.
+- Added support for the keyword `file_property_semantics` in `ShareClient`'s 
`create_directory` and `DirectoryClient`'s
+`create_directory` APIs, which specifies permissions to be configured upon 
directory creation.
+- Added support for the keyword `data` to `FileClient`'s `create_file` API, 
which specifies the
+optional initial data to be uploaded (up to 4MB).
+- Added support for connection strings and `account_url`s to accept URLs with 
`-ipv6` and `-dualstack` suffixes 
+for `ShareClient`, `ShareDirectoryClient`, and `ShareFileClient`.
+
+### Other Changes
+- Consolidated the behavior of `max_concurrency=None` by defaulting to the 
shared `DEFAULT_MAX_CONCURRENCY` constant.
+
 ## 12.25.0b1 (2026-01-27)
 
 ### Features Added
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure_storage_file_share-12.25.0b1/PKG-INFO 
new/azure_storage_file_share-12.25.0/PKG-INFO
--- old/azure_storage_file_share-12.25.0b1/PKG-INFO     2026-01-27 
15:36:09.850140300 +0100
+++ new/azure_storage_file_share-12.25.0/PKG-INFO       2026-05-15 
03:20:30.429763600 +0200
@@ -1,13 +1,13 @@
 Metadata-Version: 2.4
 Name: azure-storage-file-share
-Version: 12.25.0b1
+Version: 12.25.0
 Summary: Microsoft Azure Azure File Share Storage Client Library for Python
 Home-page: 
https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/storage/azure-storage-file-share
 Author: Microsoft Corporation
 Author-email: [email protected]
 License: MIT License
 Keywords: azure,azure sdk
-Classifier: Development Status :: 4 - Beta
+Classifier: Development Status :: 5 - Production/Stable
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3 :: Only
 Classifier: Programming Language :: Python :: 3
@@ -60,7 +60,7 @@
 ## Getting started
 
 ### Prerequisites
-* Python 3.9 or later is required to use this package. For more details, 
please read our page on [Azure SDK for Python version support 
policy](https://github.com/Azure/azure-sdk-for-python/wiki/Azure-SDKs-Python-version-support-policy).
+* Python 3.9 or later is required to use this package. For more details, 
please read our page on [Azure SDK for Python version support 
policy](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/python_version_support_policy.md).
 * You must have an [Azure subscription](https://azure.microsoft.com/free/) and 
an
 [Azure storage 
account](https://learn.microsoft.com/azure/storage/common/storage-account-overview)
 to use this package.
 
@@ -172,7 +172,7 @@
 The Azure Storage File Share client library for Python allows you to interact 
with each of these components through the
 use of a dedicated client object.
 
-### Async Clients 
+### Async Clients
 This library includes a complete async API supported on Python 3.5+. To use 
it, you must
 first install an async transport, such as 
[aiohttp](https://pypi.org/project/aiohttp/).
 See
@@ -332,7 +332,7 @@
 * __connection_timeout__ (int): The number of seconds the client will wait to 
establish a connection to the server.
 Defaults to 20 seconds.
 * __read_timeout__ (int): The number of seconds the client will wait, between 
consecutive read operations, for a
-response from the server. This is a socket level timeout and is not affected 
by overall data size. Client-side read 
+response from the server. This is a socket level timeout and is not affected 
by overall data size. Client-side read
 timeouts will be automatically retried. Defaults to 60 seconds.
 * __transport__ (Any): User-provided transport to send the HTTP request.
 
@@ -437,6 +437,30 @@
 
 # Release History
 
+## 12.25.0 (2026-05-14)
+
+### Features Added
+- Stable release of features from 12.25.0b1
+
+### Bugs Fixed
+- Fixed various issues with configuring logging via `logging_enable` and 
`logging_body` keywords on a per-request
+basis and with retries. Prior to this fix logging may have not behaved as 
expected, especially on retries.
+- Fix a potential memory leak caused by improper exception handling that could 
occur under rare circumstances.
+
+## 12.26.0b1 (2026-04-01)
+
+### Features Added
+- Added support for service version 2026-06-06.
+- Added support for the keyword `file_property_semantics` in `ShareClient`'s 
`create_directory` and `DirectoryClient`'s
+`create_directory` APIs, which specifies permissions to be configured upon 
directory creation.
+- Added support for the keyword `data` to `FileClient`'s `create_file` API, 
which specifies the
+optional initial data to be uploaded (up to 4MB).
+- Added support for connection strings and `account_url`s to accept URLs with 
`-ipv6` and `-dualstack` suffixes 
+for `ShareClient`, `ShareDirectoryClient`, and `ShareFileClient`.
+
+### Other Changes
+- Consolidated the behavior of `max_concurrency=None` by defaulting to the 
shared `DEFAULT_MAX_CONCURRENCY` constant.
+
 ## 12.25.0b1 (2026-01-27)
 
 ### Features Added
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure_storage_file_share-12.25.0b1/README.md 
new/azure_storage_file_share-12.25.0/README.md
--- old/azure_storage_file_share-12.25.0b1/README.md    2026-01-27 
15:11:20.000000000 +0100
+++ new/azure_storage_file_share-12.25.0/README.md      2026-05-15 
02:57:20.000000000 +0200
@@ -17,7 +17,7 @@
 ## Getting started
 
 ### Prerequisites
-* Python 3.9 or later is required to use this package. For more details, 
please read our page on [Azure SDK for Python version support 
policy](https://github.com/Azure/azure-sdk-for-python/wiki/Azure-SDKs-Python-version-support-policy).
+* Python 3.9 or later is required to use this package. For more details, 
please read our page on [Azure SDK for Python version support 
policy](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/python_version_support_policy.md).
 * You must have an [Azure subscription](https://azure.microsoft.com/free/) and 
an
 [Azure storage 
account](https://learn.microsoft.com/azure/storage/common/storage-account-overview)
 to use this package.
 
@@ -129,7 +129,7 @@
 The Azure Storage File Share client library for Python allows you to interact 
with each of these components through the
 use of a dedicated client object.
 
-### Async Clients 
+### Async Clients
 This library includes a complete async API supported on Python 3.5+. To use 
it, you must
 first install an async transport, such as 
[aiohttp](https://pypi.org/project/aiohttp/).
 See
@@ -289,7 +289,7 @@
 * __connection_timeout__ (int): The number of seconds the client will wait to 
establish a connection to the server.
 Defaults to 20 seconds.
 * __read_timeout__ (int): The number of seconds the client will wait, between 
consecutive read operations, for a
-response from the server. This is a socket level timeout and is not affected 
by overall data size. Client-side read 
+response from the server. This is a socket level timeout and is not affected 
by overall data size. Client-side read
 timeouts will be automatically retried. Defaults to 60 seconds.
 * __transport__ (Any): User-provided transport to send the HTTP request.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure_storage_file_share-12.25.0b1/azure/storage/fileshare/_download.py 
new/azure_storage_file_share-12.25.0/azure/storage/fileshare/_download.py
--- old/azure_storage_file_share-12.25.0b1/azure/storage/fileshare/_download.py 
2026-01-27 15:11:20.000000000 +0100
+++ new/azure_storage_file_share-12.25.0/azure/storage/fileshare/_download.py   
2026-05-15 02:57:20.000000000 +0200
@@ -17,6 +17,7 @@
 from azure.core.tracing.common import with_current_context
 from ._shared.request_handlers import validate_and_format_range_headers
 from ._shared.response_handlers import parse_length_from_content_range, 
process_storage_error
+from ._shared.constants import DEFAULT_MAX_CONCURRENCY
 
 if TYPE_CHECKING:
     from ._generated.operations import FileOperations
@@ -217,7 +218,7 @@
         start_range: Optional[int] = None,
         end_range: Optional[int] = None,
         validate_content: bool = None,  # type: ignore [assignment]
-        max_concurrency: int = 1,
+        max_concurrency: Optional[int] = None,
         name: str = None,  # type: ignore [assignment]
         path: str = None,  # type: ignore [assignment]
         share: str = None,  # type: ignore [assignment]
@@ -233,7 +234,7 @@
         self._config = config
         self._start_range = start_range
         self._end_range = end_range
-        self._max_concurrency = max_concurrency
+        self._max_concurrency = max_concurrency if max_concurrency is not None 
else DEFAULT_MAX_CONCURRENCY
         self._encoding = encoding
         self._validate_content = validate_content
         self._progress_hook = kwargs.pop('progress_hook', None)
@@ -398,7 +399,7 @@
             return data.decode(self._encoding)  # type: ignore [return-value]
         return data
 
-    def content_as_bytes(self, max_concurrency=1):
+    def content_as_bytes(self, max_concurrency=None):
         """DEPRECATED: Download the contents of this file.
 
         This operation is blocking until all data is downloaded.
@@ -414,10 +415,10 @@
             "content_as_bytes is deprecated, use readall instead",
             DeprecationWarning
         )
-        self._max_concurrency = max_concurrency
+        self._max_concurrency = max_concurrency if max_concurrency is not None 
else DEFAULT_MAX_CONCURRENCY
         return self.readall()
 
-    def content_as_text(self, max_concurrency=1, encoding="UTF-8"):
+    def content_as_text(self, max_concurrency=None, encoding="UTF-8"):
         """DEPRECATED: Download the contents of this file, and decode as text.
 
         This operation is blocking until all data is downloaded.
@@ -435,7 +436,7 @@
             "content_as_text is deprecated, use readall instead",
             DeprecationWarning
         )
-        self._max_concurrency = max_concurrency
+        self._max_concurrency = max_concurrency if max_concurrency is not None 
else DEFAULT_MAX_CONCURRENCY
         self._encoding = encoding
         return self.readall()
 
@@ -501,7 +502,7 @@
                 downloader.process_chunk(chunk)
         return self.size
 
-    def download_to_stream(self, stream, max_concurrency=1):
+    def download_to_stream(self, stream, max_concurrency=None):
         """DEPRECATED: Download the contents of this file to a stream.
 
         This method is deprecated, use func:`readinto` instead.
@@ -519,6 +520,6 @@
             "download_to_stream is deprecated, use readinto instead",
             DeprecationWarning
         )
-        self._max_concurrency = max_concurrency
+        self._max_concurrency = max_concurrency if max_concurrency is not None 
else DEFAULT_MAX_CONCURRENCY
         self.readinto(stream)
         return self.properties
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure_storage_file_share-12.25.0b1/azure/storage/fileshare/_file_client.py 
new/azure_storage_file_share-12.25.0/azure/storage/fileshare/_file_client.py
--- 
old/azure_storage_file_share-12.25.0b1/azure/storage/fileshare/_file_client.py  
    2026-01-27 15:11:20.000000000 +0100
+++ 
new/azure_storage_file_share-12.25.0/azure/storage/fileshare/_file_client.py    
    2026-05-15 02:57:20.000000000 +0200
@@ -41,6 +41,7 @@
     get_source_access_conditions
 )
 from ._shared.base_client import StorageAccountHostsMixin, 
parse_connection_str, parse_query
+from ._shared.constants import DEFAULT_MAX_CONCURRENCY
 from ._shared.request_handlers import add_metadata_headers, get_length
 from ._shared.response_handlers import return_response_headers, 
process_storage_error
 from ._shared.uploads import IterStreamer, FileChunkUploader, 
upload_data_chunks
@@ -594,7 +595,9 @@
         """
         metadata = kwargs.pop('metadata', None)
         content_settings = kwargs.pop('content_settings', None)
-        max_concurrency = kwargs.pop('max_concurrency', 1)
+        max_concurrency = kwargs.pop('max_concurrency', None)
+        if max_concurrency is None:
+            max_concurrency = DEFAULT_MAX_CONCURRENCY
         validate_content = kwargs.pop('validate_content', False)
         progress_hook = kwargs.pop('progress_hook', None)
         timeout = kwargs.pop('timeout', None)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure_storage_file_share-12.25.0b1/azure/storage/fileshare/_file_client.pyi 
new/azure_storage_file_share-12.25.0/azure/storage/fileshare/_file_client.pyi
--- 
old/azure_storage_file_share-12.25.0b1/azure/storage/fileshare/_file_client.pyi 
    2026-01-27 15:11:20.000000000 +0100
+++ 
new/azure_storage_file_share-12.25.0/azure/storage/fileshare/_file_client.pyi   
    2026-05-15 02:57:20.000000000 +0200
@@ -150,7 +150,7 @@
         metadata: Optional[Dict[str, str]] = None,
         content_settings: Optional[ContentSettings] = None,
         validate_content: bool = False,
-        max_concurrency: int = 1,
+        max_concurrency: Optional[int] = None,
         lease: Optional[Union[ShareLeaseClient, str]] = None,
         progress_hook: Optional[Callable[[int, Optional[int]], None]] = None,
         encoding: str = "UTF-8",
@@ -196,7 +196,7 @@
         offset: Optional[int] = None,
         length: Optional[int] = None,
         *,
-        max_concurrency: int = 1,
+        max_concurrency: Optional[int] = None,
         validate_content: bool = False,
         lease: Optional[Union[ShareLeaseClient, str]] = None,
         progress_hook: Optional[Callable[[int, Optional[int]], None]] = None,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure_storage_file_share-12.25.0b1/azure/storage/fileshare/_shared/constants.py
 
new/azure_storage_file_share-12.25.0/azure/storage/fileshare/_shared/constants.py
--- 
old/azure_storage_file_share-12.25.0b1/azure/storage/fileshare/_shared/constants.py
 2026-01-27 15:11:20.000000000 +0100
+++ 
new/azure_storage_file_share-12.25.0/azure/storage/fileshare/_shared/constants.py
   2026-05-15 02:57:20.000000000 +0200
@@ -18,3 +18,5 @@
 STORAGE_OAUTH_SCOPE = "https://storage.azure.com/.default";
 
 SERVICE_HOST_BASE = "core.windows.net"
+
+DEFAULT_MAX_CONCURRENCY = 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure_storage_file_share-12.25.0b1/azure/storage/fileshare/_shared/policies.py
 
new/azure_storage_file_share-12.25.0/azure/storage/fileshare/_shared/policies.py
--- 
old/azure_storage_file_share-12.25.0b1/azure/storage/fileshare/_shared/policies.py
  2026-01-27 15:11:20.000000000 +0100
+++ 
new/azure_storage_file_share-12.25.0/azure/storage/fileshare/_shared/policies.py
    2026-05-15 02:57:20.000000000 +0200
@@ -188,7 +188,7 @@
 class StorageLoggingPolicy(NetworkTraceLoggingPolicy):
     """A policy that logs HTTP request and response to the DEBUG logger.
 
-    This accepts both global configuration, and per-request level with 
"enable_http_logger"
+    This accepts both global configuration, and per-request level with 
"logging_enable" and "logging_body"
     """
 
     def __init__(self, logging_enable: bool = False, **kwargs) -> None:
@@ -198,9 +198,24 @@
     def on_request(self, request: "PipelineRequest") -> None:
         http_request = request.http_request
         options = request.context.options
-        self.logging_body = self.logging_body or options.pop("logging_body", 
False)
-        if options.pop("logging_enable", self.enable_http_logger):
-            request.context["logging_enable"] = True
+
+        # Check if logging settings are already determined (from a previous 
retry attempt)
+        if "logging_enable" not in request.context:
+            # First attempt - pop from options and store decision in context
+            # For logging_enable and logging_body, per-request setting will 
override the global setting
+            logging_body = options.pop("logging_body", self.logging_body)
+            logging_enable = options.pop("logging_enable", 
self.enable_http_logger)
+
+            # Only store in context if logging is enabled to avoid polluting 
context
+            if logging_enable:
+                request.context["logging_enable"] = True
+                request.context["logging_body"] = logging_body
+        else:
+            # Retry attempt - use the settings stored in context from the 
first attempt
+            logging_enable = request.context.get("logging_enable", False)
+            logging_body = request.context.get("logging_body", False)
+
+        if logging_enable:
             if not _LOGGER.isEnabledFor(logging.DEBUG):
                 return
 
@@ -227,7 +242,7 @@
                     _LOGGER.debug("    %r: %r", header, value)
                 _LOGGER.debug("Request body:")
 
-                if self.logging_body:
+                if logging_body:
                     _LOGGER.debug(str(http_request.body))
                 else:
                     # We don't want to log the binary data of a file upload.
@@ -236,7 +251,10 @@
                 _LOGGER.debug("Failed to log request: %r", err)
 
     def on_response(self, request: "PipelineRequest", response: 
"PipelineResponse") -> None:
-        if response.context.pop("logging_enable", self.enable_http_logger):
+        # Logging settings should always be present in context if logging is 
enabled
+        # Use .get() instead of .pop() to preserve context values for 
potential retries
+        if response.context.get("logging_enable", False):
+            logging_body = response.context.get("logging_body", False)
             if not _LOGGER.isEnabledFor(logging.DEBUG):
                 return
 
@@ -260,9 +278,9 @@
                 elif resp_content_type.startswith("image"):
                     _LOGGER.debug("Body contains image data.")
 
-                if self.logging_body and resp_content_type.startswith("text"):
+                if logging_body and resp_content_type.startswith("text"):
                     _LOGGER.debug(response.http_response.text())
-                elif self.logging_body:
+                elif logging_body:
                     try:
                         _LOGGER.debug(response.http_response.body())
                     except ValueError:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure_storage_file_share-12.25.0b1/azure/storage/fileshare/_shared/response_handlers.py
 
new/azure_storage_file_share-12.25.0/azure/storage/fileshare/_shared/response_handlers.py
--- 
old/azure_storage_file_share-12.25.0b1/azure/storage/fileshare/_shared/response_handlers.py
 2026-01-27 15:11:20.000000000 +0100
+++ 
new/azure_storage_file_share-12.25.0/azure/storage/fileshare/_shared/response_handlers.py
   2026-05-15 02:57:20.000000000 +0200
@@ -190,11 +190,15 @@
     error.additional_info = additional_data
     # error.args is what's surfaced on the traceback - show error message in 
all cases
     error.args = (error.message,)
+
     try:
-        # `from None` prevents us from double printing the exception 
(suppresses generated layer error context)
-        exec("raise error from None")  # pylint: disable=exec-used # nosec
-    except SyntaxError as exc:
-        raise error from exc
+        # `from None` suppresses exception chaining to prevent double printing 
the exception.
+        raise error from None
+    finally:
+        # Explicitly clears exception references to break circular references
+        # and allow immediate garbage collection.
+        error = None
+        storage_error = None
 
 
 def parse_to_internal_user_delegation_key(service_user_delegation_key):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure_storage_file_share-12.25.0b1/azure/storage/fileshare/_version.py 
new/azure_storage_file_share-12.25.0/azure/storage/fileshare/_version.py
--- old/azure_storage_file_share-12.25.0b1/azure/storage/fileshare/_version.py  
2026-01-27 15:11:20.000000000 +0100
+++ new/azure_storage_file_share-12.25.0/azure/storage/fileshare/_version.py    
2026-05-15 02:57:20.000000000 +0200
@@ -4,4 +4,4 @@
 # license information.
 # --------------------------------------------------------------------------
 
-VERSION = "12.25.0b1"
+VERSION = "12.25.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure_storage_file_share-12.25.0b1/azure/storage/fileshare/aio/_download_async.py
 
new/azure_storage_file_share-12.25.0/azure/storage/fileshare/aio/_download_async.py
--- 
old/azure_storage_file_share-12.25.0b1/azure/storage/fileshare/aio/_download_async.py
       2026-01-27 15:11:20.000000000 +0100
+++ 
new/azure_storage_file_share-12.25.0/azure/storage/fileshare/aio/_download_async.py
 2026-05-15 02:57:20.000000000 +0200
@@ -21,6 +21,7 @@
 from .._download import _ChunkDownloader
 from .._shared.request_handlers import validate_and_format_range_headers
 from .._shared.response_handlers import parse_length_from_content_range, 
process_storage_error
+from .._shared.constants import DEFAULT_MAX_CONCURRENCY
 
 if TYPE_CHECKING:
     from .._generated.aio.operations import FileOperations
@@ -178,7 +179,7 @@
         start_range: Optional[int] = None,
         end_range: Optional[int] = None,
         validate_content: bool = None,  # type: ignore [assignment]
-        max_concurrency: int = 1,
+        max_concurrency: Optional[int] = None,
         name: str = None,  # type: ignore [assignment]
         path: str = None,  # type: ignore [assignment]
         share: str = None,  # type: ignore [assignment]
@@ -194,7 +195,7 @@
         self._config = config
         self._start_range = start_range
         self._end_range = end_range
-        self._max_concurrency = max_concurrency
+        self._max_concurrency = max_concurrency if max_concurrency is not None 
else DEFAULT_MAX_CONCURRENCY
         self._encoding = encoding
         self._validate_content = validate_content
         self._progress_hook = kwargs.pop('progress_hook', None)
@@ -358,7 +359,7 @@
             return data.decode(self._encoding)  # type: ignore [return-value]
         return data
 
-    async def content_as_bytes(self, max_concurrency=1):
+    async def content_as_bytes(self, max_concurrency=None):
         """DEPRECATED: Download the contents of this file.
 
         This operation is blocking until all data is downloaded.
@@ -374,10 +375,10 @@
             "content_as_bytes is deprecated, use readall instead",
             DeprecationWarning
         )
-        self._max_concurrency = max_concurrency
+        self._max_concurrency = max_concurrency if max_concurrency is not None 
else DEFAULT_MAX_CONCURRENCY
         return await self.readall()
 
-    async def content_as_text(self, max_concurrency=1, encoding="UTF-8"):
+    async def content_as_text(self, max_concurrency=None, encoding="UTF-8"):
         """DEPRECATED: Download the contents of this file, and decode as text.
 
         This operation is blocking until all data is downloaded.
@@ -395,7 +396,7 @@
             "content_as_text is deprecated, use readall instead",
             DeprecationWarning
         )
-        self._max_concurrency = max_concurrency
+        self._max_concurrency = max_concurrency if max_concurrency is not None 
else DEFAULT_MAX_CONCURRENCY
         self._encoding = encoding
         return await self.readall()
 
@@ -480,7 +481,7 @@
                 process_storage_error(error)
         return self.size
 
-    async def download_to_stream(self, stream, max_concurrency=1):
+    async def download_to_stream(self, stream, max_concurrency=None):
         """Download the contents of this file to a stream.
 
         This method is deprecated, use func:`readinto` instead.
@@ -498,6 +499,6 @@
             "download_to_stream is deprecated, use readinto instead",
             DeprecationWarning
         )
-        self._max_concurrency = max_concurrency
+        self._max_concurrency = max_concurrency if max_concurrency is not None 
else DEFAULT_MAX_CONCURRENCY
         await self.readinto(stream)
         return self.properties
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure_storage_file_share-12.25.0b1/azure/storage/fileshare/aio/_file_client_async.py
 
new/azure_storage_file_share-12.25.0/azure/storage/fileshare/aio/_file_client_async.py
--- 
old/azure_storage_file_share-12.25.0b1/azure/storage/fileshare/aio/_file_client_async.py
    2026-01-27 15:11:20.000000000 +0100
+++ 
new/azure_storage_file_share-12.25.0/azure/storage/fileshare/aio/_file_client_async.py
      2026-05-15 02:57:20.000000000 +0200
@@ -43,6 +43,7 @@
 )
 from .._shared.base_client import StorageAccountHostsMixin, parse_query
 from .._shared.base_client_async import AsyncStorageAccountHostsMixin, 
parse_connection_str
+from .._shared.constants import DEFAULT_MAX_CONCURRENCY
 from .._shared.policies_async import ExponentialRetry
 from .._shared.request_handlers import add_metadata_headers, get_length
 from .._shared.response_handlers import process_storage_error, 
return_response_headers
@@ -588,7 +589,9 @@
         """
         metadata = kwargs.pop('metadata', None)
         content_settings = kwargs.pop('content_settings', None)
-        max_concurrency = kwargs.pop('max_concurrency', 1)
+        max_concurrency = kwargs.pop('max_concurrency', None)
+        if max_concurrency is None:
+            max_concurrency = DEFAULT_MAX_CONCURRENCY
         validate_content = kwargs.pop('validate_content', False)
         progress_hook = kwargs.pop('progress_hook', None)
         timeout = kwargs.pop('timeout', None)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure_storage_file_share-12.25.0b1/azure/storage/fileshare/aio/_file_client_async.pyi
 
new/azure_storage_file_share-12.25.0/azure/storage/fileshare/aio/_file_client_async.pyi
--- 
old/azure_storage_file_share-12.25.0b1/azure/storage/fileshare/aio/_file_client_async.pyi
   2026-01-27 15:11:20.000000000 +0100
+++ 
new/azure_storage_file_share-12.25.0/azure/storage/fileshare/aio/_file_client_async.pyi
     2026-05-15 02:57:20.000000000 +0200
@@ -150,7 +150,7 @@
         metadata: Optional[Dict[str, str]] = None,
         content_settings: Optional[ContentSettings] = None,
         validate_content: bool = False,
-        max_concurrency: int = 1,
+        max_concurrency: Optional[int] = None,
         lease: Optional[Union[ShareLeaseClient, str]] = None,
         progress_hook: Optional[Callable[[int, Optional[int]], 
Awaitable[None]]] = None,
         encoding: str = "UTF-8",
@@ -196,7 +196,7 @@
         offset: Optional[int] = None,
         length: Optional[int] = None,
         *,
-        max_concurrency: int = 1,
+        max_concurrency: Optional[int] = None,
         validate_content: bool = False,
         lease: Optional[Union[ShareLeaseClient, str]] = None,
         progress_hook: Optional[Callable[[int, Optional[int]], 
Awaitable[None]]] = None,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure_storage_file_share-12.25.0b1/azure_storage_file_share.egg-info/PKG-INFO
 new/azure_storage_file_share-12.25.0/azure_storage_file_share.egg-info/PKG-INFO
--- 
old/azure_storage_file_share-12.25.0b1/azure_storage_file_share.egg-info/PKG-INFO
   2026-01-27 15:36:09.000000000 +0100
+++ 
new/azure_storage_file_share-12.25.0/azure_storage_file_share.egg-info/PKG-INFO 
    2026-05-15 03:20:30.000000000 +0200
@@ -1,13 +1,13 @@
 Metadata-Version: 2.4
 Name: azure-storage-file-share
-Version: 12.25.0b1
+Version: 12.25.0
 Summary: Microsoft Azure Azure File Share Storage Client Library for Python
 Home-page: 
https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/storage/azure-storage-file-share
 Author: Microsoft Corporation
 Author-email: [email protected]
 License: MIT License
 Keywords: azure,azure sdk
-Classifier: Development Status :: 4 - Beta
+Classifier: Development Status :: 5 - Production/Stable
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3 :: Only
 Classifier: Programming Language :: Python :: 3
@@ -60,7 +60,7 @@
 ## Getting started
 
 ### Prerequisites
-* Python 3.9 or later is required to use this package. For more details, 
please read our page on [Azure SDK for Python version support 
policy](https://github.com/Azure/azure-sdk-for-python/wiki/Azure-SDKs-Python-version-support-policy).
+* Python 3.9 or later is required to use this package. For more details, 
please read our page on [Azure SDK for Python version support 
policy](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/python_version_support_policy.md).
 * You must have an [Azure subscription](https://azure.microsoft.com/free/) and 
an
 [Azure storage 
account](https://learn.microsoft.com/azure/storage/common/storage-account-overview)
 to use this package.
 
@@ -172,7 +172,7 @@
 The Azure Storage File Share client library for Python allows you to interact 
with each of these components through the
 use of a dedicated client object.
 
-### Async Clients 
+### Async Clients
 This library includes a complete async API supported on Python 3.5+. To use 
it, you must
 first install an async transport, such as 
[aiohttp](https://pypi.org/project/aiohttp/).
 See
@@ -332,7 +332,7 @@
 * __connection_timeout__ (int): The number of seconds the client will wait to 
establish a connection to the server.
 Defaults to 20 seconds.
 * __read_timeout__ (int): The number of seconds the client will wait, between 
consecutive read operations, for a
-response from the server. This is a socket level timeout and is not affected 
by overall data size. Client-side read 
+response from the server. This is a socket level timeout and is not affected 
by overall data size. Client-side read
 timeouts will be automatically retried. Defaults to 60 seconds.
 * __transport__ (Any): User-provided transport to send the HTTP request.
 
@@ -437,6 +437,30 @@
 
 # Release History
 
+## 12.25.0 (2026-05-14)
+
+### Features Added
+- Stable release of features from 12.25.0b1
+
+### Bugs Fixed
+- Fixed various issues with configuring logging via `logging_enable` and 
`logging_body` keywords on a per-request
+basis and with retries. Prior to this fix logging may have not behaved as 
expected, especially on retries.
+- Fix a potential memory leak caused by improper exception handling that could 
occur under rare circumstances.
+
+## 12.26.0b1 (2026-04-01)
+
+### Features Added
+- Added support for service version 2026-06-06.
+- Added support for the keyword `file_property_semantics` in `ShareClient`'s 
`create_directory` and `DirectoryClient`'s
+`create_directory` APIs, which specifies permissions to be configured upon 
directory creation.
+- Added support for the keyword `data` to `FileClient`'s `create_file` API, 
which specifies the
+optional initial data to be uploaded (up to 4MB).
+- Added support for connection strings and `account_url`s to accept URLs with 
`-ipv6` and `-dualstack` suffixes 
+for `ShareClient`, `ShareDirectoryClient`, and `ShareFileClient`.
+
+### Other Changes
+- Consolidated the behavior of `max_concurrency=None` by defaulting to the 
shared `DEFAULT_MAX_CONCURRENCY` constant.
+
 ## 12.25.0b1 (2026-01-27)
 
 ### Features Added
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure_storage_file_share-12.25.0b1/pyproject.toml 
new/azure_storage_file_share-12.25.0/pyproject.toml
--- old/azure_storage_file_share-12.25.0b1/pyproject.toml       2026-01-27 
15:11:20.000000000 +0100
+++ new/azure_storage_file_share-12.25.0/pyproject.toml 2026-05-15 
02:57:20.000000000 +0200
@@ -3,3 +3,7 @@
 pyright = false
 type_check_samples = true
 black = false
+
+[tool.azure-sdk-conda]
+in_bundle = true
+bundle_name = "azure-storage"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure_storage_file_share-12.25.0b1/setup.py 
new/azure_storage_file_share-12.25.0/setup.py
--- old/azure_storage_file_share-12.25.0b1/setup.py     2026-01-27 
15:11:20.000000000 +0100
+++ new/azure_storage_file_share-12.25.0/setup.py       2026-05-15 
02:57:20.000000000 +0200
@@ -45,7 +45,7 @@
     
url='https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/storage/azure-storage-file-share',
     keywords="azure, azure sdk",
     classifiers=[
-        'Development Status :: 4 - Beta',
+        'Development Status :: 5 - Production/Stable',
         'Programming Language :: Python',
         'Programming Language :: Python :: 3 :: Only',
         'Programming Language :: Python :: 3',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure_storage_file_share-12.25.0b1/tests/test_file.py 
new/azure_storage_file_share-12.25.0/tests/test_file.py
--- old/azure_storage_file_share-12.25.0b1/tests/test_file.py   2026-01-27 
15:11:20.000000000 +0100
+++ new/azure_storage_file_share-12.25.0/tests/test_file.py     2026-05-15 
02:57:20.000000000 +0200
@@ -135,8 +135,8 @@
         properties = file_client.get_file_properties()
         while properties.copy.status != 'success':
             count = count + 1
-            if count > 10:
-                self.fail('Timed out waiting for async copy to complete.')
+            if count > 15:
+                pytest.fail('Timed out waiting for async copy to complete.')
             self.sleep(6)
             properties = file_client.get_file_properties()
         assert properties.copy.status == 'success'
@@ -4015,4 +4015,49 @@
         result = file_client.download_file(decompress=False).readall()
         assert result == compressed_data
 
+    @FileSharePreparer()
+    @recorded_by_proxy
+    def test_upload_file_with_none_max_concurrency(self, **kwargs):
+        storage_account_name = kwargs.pop("storage_account_name")
+        storage_account_key = kwargs.pop("storage_account_key")
+
+        self._setup(storage_account_name, storage_account_key)
+        file_name = self._get_file_reference()
+        file_client = ShareFileClient(
+            self.account_url(storage_account_name, "file"),
+            share_name=self.share_name,
+            file_path=file_name,
+            credential=storage_account_key.secret,
+            max_range_size=4 * 1024)
+
+        data = b"hello world"
+
+        # max_concurrency=None should not raise TypeError
+        file_client.upload_file(data, max_concurrency=None)
+
+        self.assertFileEqual(file_client, data)
+
+    @FileSharePreparer()
+    @recorded_by_proxy
+    def test_download_file_with_none_max_concurrency(self, **kwargs):
+        storage_account_name = kwargs.pop("storage_account_name")
+        storage_account_key = kwargs.pop("storage_account_key")
+
+        self._setup(storage_account_name, storage_account_key)
+        file_name = self._get_file_reference()
+        file_client = ShareFileClient(
+            self.account_url(storage_account_name, "file"),
+            share_name=self.share_name,
+            file_path=file_name,
+            credential=storage_account_key.secret,
+            max_range_size=4 * 1024)
+
+        data = b"hello world"
+        file_client.upload_file(data)
+
+        # max_concurrency=None should not raise TypeError
+        content = file_client.download_file(max_concurrency=None).readall()
+
+        assert content == data
+
 # 
------------------------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure_storage_file_share-12.25.0b1/tests/test_file_async.py 
new/azure_storage_file_share-12.25.0/tests/test_file_async.py
--- old/azure_storage_file_share-12.25.0b1/tests/test_file_async.py     
2026-01-27 15:11:20.000000000 +0100
+++ new/azure_storage_file_share-12.25.0/tests/test_file_async.py       
2026-05-15 02:57:20.000000000 +0200
@@ -150,8 +150,8 @@
         properties = await file_client.get_file_properties()
         while properties.copy.status != 'success':
             count = count + 1
-            if count > 10:
-                self.fail('Timed out waiting for async copy to complete.')
+            if count > 15:
+                pytest.fail('Timed out waiting for async copy to complete.')
             self.sleep(6)
             properties = await file_client.get_file_properties()
         assert properties.copy.status == 'success'
@@ -4141,3 +4141,50 @@
 
         result = await (await 
file_client.download_file(decompress=False)).readall()
         assert result == compressed_data
+
+    @FileSharePreparer()
+    @recorded_by_proxy_async
+    async def test_upload_file_with_none_max_concurrency(self, **kwargs):
+        storage_account_name = kwargs.pop("storage_account_name")
+        storage_account_key = kwargs.pop("storage_account_key")
+
+        self._setup(storage_account_name, storage_account_key)
+        await self._setup_share(storage_account_name, storage_account_key)
+        file_name = self._get_file_reference()
+        file_client = ShareFileClient(
+            self.account_url(storage_account_name, "file"),
+            share_name=self.share_name,
+            file_path=file_name,
+            credential=storage_account_key.secret,
+            max_range_size=4 * 1024)
+
+        data = b"hello world"
+
+        # max_concurrency=None should not raise TypeError
+        await file_client.upload_file(data, max_concurrency=None)
+
+        await self.assertFileEqual(file_client, data)
+
+    @FileSharePreparer()
+    @recorded_by_proxy_async
+    async def test_download_file_with_none_max_concurrency(self, **kwargs):
+        storage_account_name = kwargs.pop("storage_account_name")
+        storage_account_key = kwargs.pop("storage_account_key")
+
+        self._setup(storage_account_name, storage_account_key)
+        await self._setup_share(storage_account_name, storage_account_key)
+        file_name = self._get_file_reference()
+        file_client = ShareFileClient(
+            self.account_url(storage_account_name, "file"),
+            share_name=self.share_name,
+            file_path=file_name,
+            credential=storage_account_key.secret,
+            max_range_size=4 * 1024)
+
+        data = b"hello world"
+        await file_client.upload_file(data)
+
+        # max_concurrency=None should not raise TypeError
+        content = await (await 
file_client.download_file(max_concurrency=None)).readall()
+
+        assert content == data

Reply via email to