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 2024-03-14 17:42:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-s3transfer (Old)
and /work/SRC/openSUSE:Factory/.python-s3transfer.new.1905 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-s3transfer"
Thu Mar 14 17:42:22 2024 rev:28 rq:1156949 version:0.10.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-s3transfer/python-s3transfer.changes
2023-12-25 19:04:34.671901408 +0100
+++
/work/SRC/openSUSE:Factory/.python-s3transfer.new.1905/python-s3transfer.changes
2024-03-14 17:42:28.943708039 +0100
@@ -1,0 +2,16 @@
+Mon Mar 4 14:00:49 UTC 2024 - Robert Schweikert <[email protected]>
+
+- Drop Provides for SLE 15 SP4 and openSUSE Leap 15.4 and later
+
+-------------------------------------------------------------------
+Wed Jan 31 22:45:39 UTC 2024 - Robert Schweikert <[email protected]>
+
+- Switch to Python 3.11 build in SLE 15 SP4 and openSUSE Leap 15.4 and
+ later (jsc#PCT-371).
+- Switch to wheel build
+- Update to 0.10.0
+ * feature:``s3``: Added CRT support for S3 Express One Zone
+- From 0.9.0
+ * feature:Python: End of support for Python 3.7
+
+-------------------------------------------------------------------
Old:
----
s3transfer-0.8.2.tar.gz
New:
----
s3transfer-0.10.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-s3transfer.spec ++++++
--- /var/tmp/diff_new_pack.qqX5i6/_old 2024-03-14 17:42:29.467727252 +0100
+++ /var/tmp/diff_new_pack.qqX5i6/_new 2024-03-14 17:42:29.467727252 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-s3transfer
#
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,10 +16,9 @@
#
-%{?!python_module:%define python_module() python-%{**} python3-%{**}}
-%define skip_python2 1
+%{?sle15_python_module_pythons}
Name: python-s3transfer
-Version: 0.8.2
+Version: 0.10.0
Release: 0
Summary: Python S3 transfer manager
License: Apache-2.0
@@ -27,15 +26,18 @@
URL: https://github.com/boto/s3transfer
Source0:
https://files.pythonhosted.org/packages/source/s/s3transfer/s3transfer-%{version}.tar.gz
BuildRequires: %{python_module botocore >= 1.33.2}
+BuildRequires: %{python_module pip}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module setuptools}
+BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-Requires: python-botocore <= 2.0.0
-Requires: python-botocore >= 1.33.2
Requires: python-requests
+Requires: (python-botocore >= 1.33.2 with python-botocore <= 2.0.0)
BuildArch: noarch
-
+%if 0%{?sle_version} >= 150400
+Obsoletes: python3-s3transfer < %{version}
+%endif
%python_subpackages
%description
@@ -47,10 +49,10 @@
rm -rf tests/integration
%build
-%python_build
+%pyproject_wheel
%install
-%python_install
+%pyproject_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
@@ -61,5 +63,5 @@
%license LICENSE.txt
%doc README.rst
%{python_sitelib}/s3transfer/
-%{python_sitelib}/s3transfer-%{version}-py*.egg-info
+%{python_sitelib}/s3transfer-%{version}*-info
++++++ s3transfer-0.8.2.tar.gz -> s3transfer-0.10.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/s3transfer-0.8.2/PKG-INFO
new/s3transfer-0.10.0/PKG-INFO
--- old/s3transfer-0.8.2/PKG-INFO 2023-11-29 20:43:09.000000000 +0100
+++ new/s3transfer-0.10.0/PKG-INFO 2023-12-21 20:12:29.487909300 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: s3transfer
-Version: 0.8.2
+Version: 0.10.0
Summary: An Amazon S3 Transfer Manager
Home-page: https://github.com/boto/s3transfer
Author: Amazon Web Services
@@ -14,13 +14,12 @@
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
-Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
-Requires-Python: >= 3.7
+Requires-Python: >= 3.8
Provides-Extra: crt
License-File: LICENSE.txt
License-File: NOTICE.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/s3transfer-0.8.2/s3transfer/__init__.py
new/s3transfer-0.10.0/s3transfer/__init__.py
--- old/s3transfer-0.8.2/s3transfer/__init__.py 2023-11-29 20:43:09.000000000
+0100
+++ new/s3transfer-0.10.0/s3transfer/__init__.py 2023-12-21
20:12:29.000000000 +0100
@@ -144,7 +144,7 @@
from s3transfer.exceptions import RetriesExceededError, S3UploadFailedError
__author__ = 'Amazon Web Services'
-__version__ = '0.8.2'
+__version__ = '0.10.0'
class NullHandler(logging.Handler):
@@ -681,7 +681,6 @@
class S3Transfer:
-
ALLOWED_DOWNLOAD_ARGS = [
'VersionId',
'SSECustomerAlgorithm',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/s3transfer-0.8.2/s3transfer/crt.py
new/s3transfer-0.10.0/s3transfer/crt.py
--- old/s3transfer-0.8.2/s3transfer/crt.py 2023-11-29 20:43:09.000000000
+0100
+++ new/s3transfer-0.10.0/s3transfer/crt.py 2023-12-21 20:12:29.000000000
+0100
@@ -18,7 +18,12 @@
import awscrt.s3
import botocore.awsrequest
import botocore.session
-from awscrt.auth import AwsCredentials, AwsCredentialsProvider
+from awscrt.auth import (
+ AwsCredentials,
+ AwsCredentialsProvider,
+ AwsSigningAlgorithm,
+ AwsSigningConfig,
+)
from awscrt.io import (
ClientBootstrap,
ClientTlsContext,
@@ -35,7 +40,12 @@
from s3transfer.constants import MB
from s3transfer.exceptions import TransferNotDoneError
from s3transfer.futures import BaseTransferFuture, BaseTransferMeta
-from s3transfer.utils import CallArgs, OSUtils, get_callbacks
+from s3transfer.utils import (
+ CallArgs,
+ OSUtils,
+ get_callbacks,
+ is_s3express_bucket,
+)
logger = logging.getLogger(__name__)
@@ -148,6 +158,7 @@
tls_mode=tls_mode,
tls_connection_options=tls_connection_options,
throughput_target_gbps=target_gbps,
+ enable_s3express=True,
)
@@ -807,7 +818,7 @@
on_done_before_calls,
on_done_after_calls,
):
- return {
+ make_request_args = {
'request': self._request_serializer.serialize_http_request(
request_type, future
),
@@ -819,6 +830,11 @@
),
'on_progress': self.get_crt_callback(future, 'progress'),
}
+ if is_s3express_bucket(call_args.bucket):
+ make_request_args['signing_config'] = AwsSigningConfig(
+ algorithm=AwsSigningAlgorithm.V4_S3EXPRESS
+ )
+ return make_request_args
class RenameTempFileHandler:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/s3transfer-0.8.2/s3transfer/futures.py
new/s3transfer-0.10.0/s3transfer/futures.py
--- old/s3transfer-0.8.2/s3transfer/futures.py 2023-11-29 20:38:58.000000000
+0100
+++ new/s3transfer-0.10.0/s3transfer/futures.py 2023-12-21 20:10:16.000000000
+0100
@@ -505,6 +505,7 @@
than concurrent.futures.Future.add_done_callback that requires
a single argument for the future.
"""
+
# The done callback for concurrent.futures.Future will always pass a
# the future in as the only argument. So we need to create the
# proper signature wrapper that will invoke the callback provided.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/s3transfer-0.8.2/s3transfer.egg-info/PKG-INFO
new/s3transfer-0.10.0/s3transfer.egg-info/PKG-INFO
--- old/s3transfer-0.8.2/s3transfer.egg-info/PKG-INFO 2023-11-29
20:43:09.000000000 +0100
+++ new/s3transfer-0.10.0/s3transfer.egg-info/PKG-INFO 2023-12-21
20:12:29.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: s3transfer
-Version: 0.8.2
+Version: 0.10.0
Summary: An Amazon S3 Transfer Manager
Home-page: https://github.com/boto/s3transfer
Author: Amazon Web Services
@@ -14,13 +14,12 @@
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
-Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
-Requires-Python: >= 3.7
+Requires-Python: >= 3.8
Provides-Extra: crt
License-File: LICENSE.txt
License-File: NOTICE.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/s3transfer-0.8.2/setup.py
new/s3transfer-0.10.0/setup.py
--- old/s3transfer-0.8.2/setup.py 2023-11-29 20:40:28.000000000 +0100
+++ new/s3transfer-0.10.0/setup.py 2023-12-21 20:10:16.000000000 +0100
@@ -33,7 +33,7 @@
'crt': 'botocore[crt]>=1.33.2,<2.0a.0',
},
license="Apache License 2.0",
- python_requires=">= 3.7",
+ python_requires=">= 3.8",
classifiers=[
'Development Status :: 3 - Alpha',
'Intended Audience :: Developers',
@@ -42,7 +42,6 @@
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3 :: Only',
- 'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/s3transfer-0.8.2/tests/functional/test_copy.py
new/s3transfer-0.10.0/tests/functional/test_copy.py
--- old/s3transfer-0.8.2/tests/functional/test_copy.py 2023-11-29
20:40:28.000000000 +0100
+++ new/s3transfer-0.10.0/tests/functional/test_copy.py 2023-12-21
20:10:16.000000000 +0100
@@ -84,7 +84,6 @@
expected_create_mpu_params=None,
expected_complete_mpu_params=None,
):
-
# Add all responses needed to do the copy of the object.
# Should account for both ranged and nonranged downloads.
stubbed_responses = self.create_stubbed_responses()[1:]
@@ -497,7 +496,6 @@
def _add_params_to_expected_params(
self, add_copy_kwargs, operation_types, new_params
):
-
expected_params_to_update = []
for operation_type in operation_types:
add_copy_kwargs_key = 'expected_' + operation_type + '_params'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/s3transfer-0.8.2/tests/functional/test_crt.py
new/s3transfer-0.10.0/tests/functional/test_crt.py
--- old/s3transfer-0.8.2/tests/functional/test_crt.py 2023-11-29
20:40:28.000000000 +0100
+++ new/s3transfer-0.10.0/tests/functional/test_crt.py 2023-12-21
20:12:29.000000000 +0100
@@ -68,6 +68,7 @@
def setUp(self):
self.region = 'us-west-2'
self.bucket = "test_bucket"
+ self.s3express_bucket = 's3expressbucket--usw2-az5--x-s3'
self.key = "test_key"
self.expected_content = b'my content'
self.expected_download_content = b'new content'
@@ -77,6 +78,8 @@
)
self.expected_path = "/" + self.bucket + "/" + self.key
self.expected_host = "s3.%s.amazonaws.com" % (self.region)
+ self.expected_s3express_host =
f'{self.s3express_bucket}.s3express-usw2-az5.us-west-2.amazonaws.com'
+ self.expected_s3express_path = f'/{self.key}'
self.s3_request = mock.Mock(awscrt.s3.S3Request)
self.s3_crt_client = mock.Mock(awscrt.s3.S3Client)
self.s3_crt_client.make_request.side_effect = (
@@ -134,6 +137,21 @@
for expected_missing_header in expected_missing_headers:
self.assertNotIn(expected_missing_header.lower(), header_names)
+ def _assert_exected_s3express_request(
+ self, make_request_kwargs, expected_http_method='GET'
+ ):
+ self._assert_expected_crt_http_request(
+ make_request_kwargs["request"],
+ expected_host=self.expected_s3express_host,
+ expected_path=self.expected_s3express_path,
+ expected_http_method=expected_http_method,
+ )
+ self.assertIn('signing_config', make_request_kwargs)
+ self.assertEqual(
+ make_request_kwargs['signing_config'].algorithm,
+ awscrt.auth.AwsSigningAlgorithm.V4_S3EXPRESS,
+ )
+
def _assert_subscribers_called(self, expected_future=None):
self.assertTrue(self.record_subscriber.on_queued_called)
self.assertTrue(self.record_subscriber.on_done_called)
@@ -355,6 +373,20 @@
[self.record_subscriber],
)
+ def test_upload_with_s3express(self):
+ future = self.transfer_manager.upload(
+ self.filename,
+ self.s3express_bucket,
+ self.key,
+ {},
+ [self.record_subscriber],
+ )
+ future.result()
+ self._assert_exected_s3express_request(
+ self.s3_crt_client.make_request.call_args[1],
+ expected_http_method='PUT',
+ )
+
def test_download(self):
future = self.transfer_manager.download(
self.bucket, self.key, self.filename, {}, [self.record_subscriber]
@@ -457,6 +489,20 @@
underlying_stream.getvalue(), self.expected_download_content
)
+ def test_download_with_s3express(self):
+ future = self.transfer_manager.download(
+ self.s3express_bucket,
+ self.key,
+ self.filename,
+ {},
+ [self.record_subscriber],
+ )
+ future.result()
+ self._assert_exected_s3express_request(
+ self.s3_crt_client.make_request.call_args[1],
+ expected_http_method='GET',
+ )
+
def test_delete(self):
future = self.transfer_manager.delete(
self.bucket, self.key, {}, [self.record_subscriber]
@@ -480,6 +526,16 @@
)
self._assert_subscribers_called(future)
+ def test_delete_with_s3express(self):
+ future = self.transfer_manager.delete(
+ self.s3express_bucket, self.key, {}, [self.record_subscriber]
+ )
+ future.result()
+ self._assert_exected_s3express_request(
+ self.s3_crt_client.make_request.call_args[1],
+ expected_http_method='DELETE',
+ )
+
def test_blocks_when_max_requests_processes_reached(self):
self.s3_crt_client.make_request.return_value = self.s3_request
# We simulate blocking by not invoking the on_done callbacks for
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/s3transfer-0.8.2/tests/functional/test_delete.py
new/s3transfer-0.10.0/tests/functional/test_delete.py
--- old/s3transfer-0.8.2/tests/functional/test_delete.py 2023-11-29
20:38:58.000000000 +0100
+++ new/s3transfer-0.10.0/tests/functional/test_delete.py 2023-12-21
20:10:16.000000000 +0100
@@ -15,7 +15,6 @@
class TestDeleteObject(BaseGeneralInterfaceTest):
-
__test__ = True
def setUp(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/s3transfer-0.8.2/tests/unit/test_crt.py
new/s3transfer-0.10.0/tests/unit/test_crt.py
--- old/s3transfer-0.8.2/tests/unit/test_crt.py 2023-11-29 20:43:09.000000000
+0100
+++ new/s3transfer-0.10.0/tests/unit/test_crt.py 2023-12-21
20:12:29.000000000 +0100
@@ -362,3 +362,7 @@
mock_s3_crt_client.call_args[1]['throughput_target_gbps']
== expected_gbps
)
+
+ def test_always_enables_s3express(self, mock_s3_crt_client):
+ s3transfer.crt.create_s3_crt_client('us-west-2')
+ assert mock_s3_crt_client.call_args[1]['enable_s3express'] is True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/s3transfer-0.8.2/tests/unit/test_s3transfer.py
new/s3transfer-0.10.0/tests/unit/test_s3transfer.py
--- old/s3transfer-0.8.2/tests/unit/test_s3transfer.py 2023-11-29
20:38:58.000000000 +0100
+++ new/s3transfer-0.10.0/tests/unit/test_s3transfer.py 2023-12-21
20:10:16.000000000 +0100
@@ -377,7 +377,6 @@
class TestMultipartDownloader(unittest.TestCase):
-
maxDiff = None
def test_multipart_download_uses_correct_client_calls(self):