Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-s3transfer for openSUSE:Factory checked in at 2025-07-30 11:41:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-s3transfer (Old) and /work/SRC/openSUSE:Factory/.python-s3transfer.new.13279 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-s3transfer" Wed Jul 30 11:41:07 2025 rev:39 rq:1296097 version:0.13.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-s3transfer/python-s3transfer.changes 2025-05-31 19:14:17.620377802 +0200 +++ /work/SRC/openSUSE:Factory/.python-s3transfer.new.13279/python-s3transfer.changes 2025-07-30 11:41:15.428480168 +0200 @@ -1,0 +2,7 @@ +Wed Jul 23 12:20:57 UTC 2025 - John Paul Adrian Glaubitz <adrian.glaub...@suse.com> + +- Update to version 0.13.1 + * enhancement:Python: Added provisional support for the + upcoming Python 3.14 release + +------------------------------------------------------------------- Old: ---- s3transfer-0.13.0.tar.gz New: ---- s3transfer-0.13.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-s3transfer.spec ++++++ --- /var/tmp/diff_new_pack.EKMond/_old 2025-07-30 11:41:16.460522830 +0200 +++ /var/tmp/diff_new_pack.EKMond/_new 2025-07-30 11:41:16.464522996 +0200 @@ -18,7 +18,7 @@ %{?sle15_python_module_pythons} Name: python-s3transfer -Version: 0.13.0 +Version: 0.13.1 Release: 0 Summary: Python S3 transfer manager License: Apache-2.0 ++++++ s3transfer-0.13.0.tar.gz -> s3transfer-0.13.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/s3transfer-0.13.0/PKG-INFO new/s3transfer-0.13.1/PKG-INFO --- old/s3transfer-0.13.0/PKG-INFO 2025-05-22 20:05:33.230821400 +0200 +++ new/s3transfer-0.13.1/PKG-INFO 2025-07-18 20:11:17.464557200 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: s3transfer -Version: 0.13.0 +Version: 0.13.1 Summary: An Amazon S3 Transfer Manager Home-page: https://github.com/boto/s3transfer Author: Amazon Web Services @@ -18,6 +18,7 @@ Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: 3.14 Requires-Python: >= 3.9 License-File: LICENSE.txt License-File: NOTICE.txt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/s3transfer-0.13.0/s3transfer/__init__.py new/s3transfer-0.13.1/s3transfer/__init__.py --- old/s3transfer-0.13.0/s3transfer/__init__.py 2025-05-22 20:05:33.000000000 +0200 +++ new/s3transfer-0.13.1/s3transfer/__init__.py 2025-07-18 20:11:17.000000000 +0200 @@ -134,6 +134,7 @@ import socket import string import threading +from logging import NullHandler from botocore.compat import six # noqa: F401 from botocore.exceptions import IncompleteReadError, ResponseStreamingError @@ -145,12 +146,7 @@ from s3transfer.exceptions import RetriesExceededError, S3UploadFailedError __author__ = 'Amazon Web Services' -__version__ = '0.13.0' - - -class NullHandler(logging.Handler): - def emit(self, record): - pass +__version__ = '0.13.1' logger = logging.getLogger(__name__) @@ -513,7 +509,7 @@ with self._shutdown_lock: if self._shutdown: raise QueueShutdownError( - "Cannot put item to queue when " "queue has been shutdown." + "Cannot put item to queue when queue has been shutdown." ) return queue.Queue.put(self, item) @@ -800,8 +796,7 @@ ) except Exception: logger.debug( - "Exception caught in download_file, removing partial " - "file: %s", + "Exception caught in download_file, removing partial file: %s", temp_filename, exc_info=True, ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/s3transfer-0.13.0/s3transfer/crt.py new/s3transfer-0.13.1/s3transfer/crt.py --- old/s3transfer-0.13.0/s3transfer/crt.py 2025-05-22 20:00:38.000000000 +0200 +++ new/s3transfer-0.13.1/s3transfer/crt.py 2025-07-18 20:11:17.000000000 +0200 @@ -46,6 +46,7 @@ from s3transfer.utils import ( CallArgs, OSUtils, + create_nested_client, get_callbacks, is_s3express_bucket, ) @@ -481,7 +482,7 @@ if client_kwargs is None: client_kwargs = {} self._resolve_client_config(session, client_kwargs) - self._client = session.create_client(**client_kwargs) + self._client = create_nested_client(session, **client_kwargs) self._client.meta.events.register( 'request-created.s3.*', self._capture_http_request ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/s3transfer-0.13.0/s3transfer/manager.py new/s3transfer-0.13.1/s3transfer/manager.py --- old/s3transfer-0.13.0/s3transfer/manager.py 2025-05-22 20:00:38.000000000 +0200 +++ new/s3transfer-0.13.1/s3transfer/manager.py 2025-07-18 20:11:17.000000000 +0200 @@ -514,8 +514,9 @@ for kwarg in actual: if kwarg not in allowed: raise ValueError( - "Invalid extra_args key '{}', " - "must be one of: {}".format(kwarg, ', '.join(allowed)) + "Invalid extra_args key '{}', must be one of: {}".format( + kwarg, ', '.join(allowed) + ) ) def _add_operation_defaults(self, extra_args): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/s3transfer-0.13.0/s3transfer/processpool.py new/s3transfer-0.13.1/s3transfer/processpool.py --- old/s3transfer-0.13.0/s3transfer/processpool.py 2025-05-22 20:00:38.000000000 +0200 +++ new/s3transfer-0.13.1/s3transfer/processpool.py 2025-07-18 20:11:17.000000000 +0200 @@ -214,6 +214,7 @@ OSUtils, calculate_num_parts, calculate_range_parameter, + create_nested_client, ) logger = logging.getLogger(__name__) @@ -577,9 +578,8 @@ def create_client(self): """Create a botocore S3 client""" - return botocore.session.Session().create_client( - 's3', **self._client_kwargs - ) + session = botocore.session.Session() + return create_nested_client(session, 's3', **self._client_kwargs) class TransferMonitor: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/s3transfer-0.13.0/s3transfer/subscribers.py new/s3transfer-0.13.1/s3transfer/subscribers.py --- old/s3transfer-0.13.0/s3transfer/subscribers.py 2025-05-22 20:00:38.000000000 +0200 +++ new/s3transfer-0.13.1/s3transfer/subscribers.py 2025-07-18 20:11:17.000000000 +0200 @@ -20,7 +20,7 @@ """The base subscriber class It is recommended that all subscriber implementations subclass and then - override the subscription methods (i.e. on_{subsribe_type}() methods). + override the subscription methods (i.e. on_{subscribe_type}() methods). """ VALID_SUBSCRIBER_TYPES = ['queued', 'progress', 'done'] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/s3transfer-0.13.0/s3transfer/utils.py new/s3transfer-0.13.1/s3transfer/utils.py --- old/s3transfer-0.13.0/s3transfer/utils.py 2025-05-22 20:00:38.000000000 +0200 +++ new/s3transfer-0.13.1/s3transfer/utils.py 2025-07-18 20:11:17.000000000 +0200 @@ -831,3 +831,18 @@ if any(checksum in extra_args for checksum in FULL_OBJECT_CHECKSUM_ARGS): return extra_args.setdefault("ChecksumAlgorithm", DEFAULT_CHECKSUM_ALGORITHM) + + +# NOTE: The following interfaces are considered private and are subject +# to abrupt breaking changes. Please do not use them directly. + +try: + from botocore.utils import create_nested_client as create_client +except ImportError: + + def create_client(session, *args, **kwargs): + return session.create_client(*args, **kwargs) + + +def create_nested_client(session, service_name, **kwargs): + return create_client(session, service_name, **kwargs) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/s3transfer-0.13.0/s3transfer.egg-info/PKG-INFO new/s3transfer-0.13.1/s3transfer.egg-info/PKG-INFO --- old/s3transfer-0.13.0/s3transfer.egg-info/PKG-INFO 2025-05-22 20:05:33.000000000 +0200 +++ new/s3transfer-0.13.1/s3transfer.egg-info/PKG-INFO 2025-07-18 20:11:17.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: s3transfer -Version: 0.13.0 +Version: 0.13.1 Summary: An Amazon S3 Transfer Manager Home-page: https://github.com/boto/s3transfer Author: Amazon Web Services @@ -18,6 +18,7 @@ Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: 3.14 Requires-Python: >= 3.9 License-File: LICENSE.txt License-File: NOTICE.txt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/s3transfer-0.13.0/setup.py new/s3transfer-0.13.1/setup.py --- old/s3transfer-0.13.0/setup.py 2025-05-22 20:00:38.000000000 +0200 +++ new/s3transfer-0.13.1/setup.py 2025-07-18 20:11:17.000000000 +0200 @@ -47,5 +47,6 @@ 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', 'Programming Language :: Python :: 3.13', + 'Programming Language :: Python :: 3.14', ], ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/s3transfer-0.13.0/tests/functional/test_upload.py new/s3transfer-0.13.1/tests/functional/test_upload.py --- old/s3transfer-0.13.0/tests/functional/test_upload.py 2025-05-22 20:00:38.000000000 +0200 +++ new/s3transfer-0.13.1/tests/functional/test_upload.py 2025-07-18 20:11:17.000000000 +0200 @@ -458,7 +458,7 @@ if checksum_algorithm: checksum_member = f'Checksum{checksum_algorithm.upper()}' response = upload_part_response['service_response'] - response[checksum_member] = f'sum{i+1}==' + response[checksum_member] = f'sum{i + 1}==' upload_part_response['expected_params'] = expected_params self.stubber.add_response(**upload_part_response) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/s3transfer-0.13.0/tests/unit/test_compat.py new/s3transfer-0.13.1/tests/unit/test_compat.py --- old/s3transfer-0.13.0/tests/unit/test_compat.py 2025-05-22 20:00:38.000000000 +0200 +++ new/s3transfer-0.13.1/tests/unit/test_compat.py 2025-07-18 20:11:17.000000000 +0200 @@ -10,6 +10,7 @@ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF # ANY KIND, either express or implied. See the License for the specific # language governing permissions and limitations under the License. +import multiprocessing import os import shutil import signal @@ -80,7 +81,15 @@ class TestBaseManager(unittest.TestCase): def create_pid_manager(self): class PIDManager(BaseManager): - pass + def __init__(self): + # Python 3.14 changed the non-macOS POSIX default to forkserver + # but the code in this module does not work with it + # See https://github.com/python/cpython/issues/125714 + if multiprocessing.get_start_method() == 'forkserver': + ctx = multiprocessing.get_context(method='fork') + else: + ctx = multiprocessing.get_context() + super().__init__(ctx=ctx) PIDManager.register('getpid', os.getpid) return PIDManager() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/s3transfer-0.13.0/tests/unit/test_futures.py new/s3transfer-0.13.1/tests/unit/test_futures.py --- old/s3transfer-0.13.0/tests/unit/test_futures.py 2025-05-22 20:00:38.000000000 +0200 +++ new/s3transfer-0.13.1/tests/unit/test_futures.py 2025-07-18 20:11:17.000000000 +0200 @@ -474,7 +474,7 @@ def get_task(self, task_cls, main_kwargs=None): return task_cls(self.coordinator, main_kwargs=main_kwargs) - def get_sleep_task(self, sleep_time=0.01): + def get_sleep_task(self, sleep_time=0.03): return self.get_task(SleepTask, main_kwargs={'sleep_time': sleep_time}) def add_semaphore(self, task_tag, count):