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-03-01 19:16:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-s3transfer (Old)
 and      /work/SRC/openSUSE:Factory/.python-s3transfer.new.19136 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-s3transfer"

Sat Mar  1 19:16:07 2025 rev:35 rq:1249237 version:0.11.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-s3transfer/python-s3transfer.changes      
2025-01-22 16:32:01.851221336 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-s3transfer.new.19136/python-s3transfer.changes
   2025-03-01 19:16:18.356480150 +0100
@@ -1,0 +2,7 @@
+Mon Feb  3 09:29:32 UTC 2025 - John Paul Adrian Glaubitz 
<adrian.glaub...@suse.com>
+
+- Update to version 0.11.2
+  * bugfix:upload: Only set a default checksum if the 
``request_checksum_calculation``
+    config is set to ``when_supported``. Fixes (boto/s3transfer#327).
+
+-------------------------------------------------------------------

Old:
----
  s3transfer-0.11.1.tar.gz

New:
----
  s3transfer-0.11.2.tar.gz

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

Other differences:
------------------
++++++ python-s3transfer.spec ++++++
--- /var/tmp/diff_new_pack.3ZLmlf/_old  2025-03-01 19:16:18.800498577 +0100
+++ /var/tmp/diff_new_pack.3ZLmlf/_new  2025-03-01 19:16:18.804498743 +0100
@@ -18,7 +18,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-s3transfer
-Version:        0.11.1
+Version:        0.11.2
 Release:        0
 Summary:        Python S3 transfer manager
 License:        Apache-2.0

++++++ s3transfer-0.11.1.tar.gz -> s3transfer-0.11.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/s3transfer-0.11.1/PKG-INFO 
new/s3transfer-0.11.2/PKG-INFO
--- old/s3transfer-0.11.1/PKG-INFO      2025-01-16 20:14:38.242988600 +0100
+++ new/s3transfer-0.11.2/PKG-INFO      2025-01-23 20:07:42.875888300 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: s3transfer
-Version: 0.11.1
+Version: 0.11.2
 Summary: An Amazon S3 Transfer Manager
 Home-page: https://github.com/boto/s3transfer
 Author: Amazon Web Services
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/s3transfer-0.11.1/s3transfer/__init__.py 
new/s3transfer-0.11.2/s3transfer/__init__.py
--- old/s3transfer-0.11.1/s3transfer/__init__.py        2025-01-16 
20:14:38.000000000 +0100
+++ new/s3transfer-0.11.2/s3transfer/__init__.py        2025-01-23 
20:07:42.000000000 +0100
@@ -145,7 +145,7 @@
 from s3transfer.exceptions import RetriesExceededError, S3UploadFailedError
 
 __author__ = 'Amazon Web Services'
-__version__ = '0.11.1'
+__version__ = '0.11.2'
 
 
 class NullHandler(logging.Handler):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/s3transfer-0.11.1/s3transfer/manager.py 
new/s3transfer-0.11.2/s3transfer/manager.py
--- old/s3transfer-0.11.1/s3transfer/manager.py 2025-01-16 20:10:58.000000000 
+0100
+++ new/s3transfer-0.11.2/s3transfer/manager.py 2025-01-23 20:07:42.000000000 
+0100
@@ -519,7 +519,11 @@
                 )
 
     def _add_operation_defaults(self, extra_args):
-        set_default_checksum_algorithm(extra_args)
+        if (
+            self.client.meta.config.request_checksum_calculation
+            == "when_supported"
+        ):
+            set_default_checksum_algorithm(extra_args)
 
     def _submit_transfer(
         self, call_args, submission_task_cls, extra_main_kwargs=None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/s3transfer-0.11.1/s3transfer.egg-info/PKG-INFO 
new/s3transfer-0.11.2/s3transfer.egg-info/PKG-INFO
--- old/s3transfer-0.11.1/s3transfer.egg-info/PKG-INFO  2025-01-16 
20:14:38.000000000 +0100
+++ new/s3transfer-0.11.2/s3transfer.egg-info/PKG-INFO  2025-01-23 
20:07:42.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: s3transfer
-Version: 0.11.1
+Version: 0.11.2
 Summary: An Amazon S3 Transfer Manager
 Home-page: https://github.com/boto/s3transfer
 Author: Amazon Web Services
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/s3transfer-0.11.1/tests/functional/test_upload.py 
new/s3transfer-0.11.2/tests/functional/test_upload.py
--- old/s3transfer-0.11.1/tests/functional/test_upload.py       2025-01-16 
20:10:58.000000000 +0100
+++ new/s3transfer-0.11.2/tests/functional/test_upload.py       2025-01-23 
20:07:42.000000000 +0100
@@ -19,6 +19,7 @@
 from botocore.awsrequest import AWSRequest
 from botocore.client import Config
 from botocore.exceptions import ClientError
+from botocore.httpchecksum import DEFAULT_CHECKSUM_ALGORITHM
 from botocore.stub import ANY
 
 from s3transfer.manager import TransferConfig, TransferManager
@@ -143,7 +144,7 @@
     __test__ = True
 
     def add_put_object_response_with_default_expected_params(
-        self, extra_expected_params=None, bucket=None
+        self, extra_expected_params=None, bucket=None, include_checksum=True
     ):
         if bucket is None:
             bucket = self.bucket
@@ -152,8 +153,9 @@
             'Body': ANY,
             'Bucket': bucket,
             'Key': self.key,
-            'ChecksumAlgorithm': 'CRC32',
         }
+        if include_checksum:
+            expected_params["ChecksumAlgorithm"] = DEFAULT_CHECKSUM_ALGORITHM
         if extra_expected_params:
             expected_params.update(extra_expected_params)
         upload_response = self.create_stubbed_responses()[0]
@@ -187,6 +189,46 @@
         self.assert_expected_client_calls_were_correct()
         self.assert_put_object_body_was_correct()
 
+    def test_upload_with_default_checksum_when_supported(self):
+        # Reset client to configure `request_checksum_calculation` to 
"when_supported".
+        self.reset_stubber_with_new_client(
+            {'config': Config(request_checksum_calculation="when_supported")}
+        )
+        self.client.meta.events.register(
+            'before-parameter-build.s3.*', self.collect_body
+        )
+        self._manager = TransferManager(self.client, self.config)
+
+        self.add_put_object_response_with_default_expected_params(
+            include_checksum=True
+        )
+        future = self.manager.upload(
+            self.filename, self.bucket, self.key, self.extra_args
+        )
+        future.result()
+        self.assert_expected_client_calls_were_correct()
+        self.assert_put_object_body_was_correct()
+
+    def test_upload_with_default_checksum_when_required(self):
+        # Reset client to configure `request_checksum_calculation` to 
"when_required".
+        self.reset_stubber_with_new_client(
+            {'config': Config(request_checksum_calculation="when_required")}
+        )
+        self.client.meta.events.register(
+            'before-parameter-build.s3.*', self.collect_body
+        )
+        self._manager = TransferManager(self.client, self.config)
+
+        self.add_put_object_response_with_default_expected_params(
+            include_checksum=False
+        )
+        future = self.manager.upload(
+            self.filename, self.bucket, self.key, self.extra_args
+        )
+        future.result()
+        self.assert_expected_client_calls_were_correct()
+        self.assert_put_object_body_was_correct()
+
     def test_upload_with_s3express_default_checksum(self):
         s3express_bucket = "mytestbucket--usw2-az6--x-s3"
         self.assertFalse("ChecksumAlgorithm" in self.extra_args)
@@ -370,9 +412,7 @@
         self.assertEqual(self.sent_bodies, expected_contents)
 
     def add_create_multipart_response_with_default_expected_params(
-        self,
-        extra_expected_params=None,
-        bucket=None,
+        self, extra_expected_params=None, bucket=None, include_checksum=True
     ):
         if bucket is None:
             bucket = self.bucket
@@ -380,8 +420,9 @@
         expected_params = {
             'Bucket': bucket,
             'Key': self.key,
-            'ChecksumAlgorithm': 'CRC32',
         }
+        if include_checksum:
+            expected_params["ChecksumAlgorithm"] = DEFAULT_CHECKSUM_ALGORITHM
         if extra_expected_params:
             expected_params.update(extra_expected_params)
         response = self.create_stubbed_responses()[0]
@@ -389,9 +430,7 @@
         self.stubber.add_response(**response)
 
     def add_upload_part_responses_with_default_expected_params(
-        self,
-        extra_expected_params=None,
-        bucket=None,
+        self, extra_expected_params=None, bucket=None, include_checksum=True
     ):
         if bucket is None:
             bucket = self.bucket
@@ -406,50 +445,48 @@
                 'UploadId': self.multipart_id,
                 'Body': ANY,
                 'PartNumber': i + 1,
-                'ChecksumAlgorithm': 'CRC32',
             }
+            if include_checksum:
+                expected_params["ChecksumAlgorithm"] = (
+                    DEFAULT_CHECKSUM_ALGORITHM
+                )
             if extra_expected_params:
                 expected_params.update(extra_expected_params)
 
-            name = expected_params['ChecksumAlgorithm']
-            checksum_member = f'Checksum{name.upper()}'
-            response = upload_part_response['service_response']
-            response[checksum_member] = f'sum{i+1}=='
+            # If ChecksumAlgorithm is in expected parameters, add checksum to 
the response
+            checksum_algorithm = expected_params.get('ChecksumAlgorithm')
+            if checksum_algorithm:
+                checksum_member = f'Checksum{checksum_algorithm.upper()}'
+                response = upload_part_response['service_response']
+                response[checksum_member] = f'sum{i+1}=='
 
             upload_part_response['expected_params'] = expected_params
             self.stubber.add_response(**upload_part_response)
 
     def add_complete_multipart_response_with_default_expected_params(
-        self,
-        extra_expected_params=None,
-        bucket=None,
+        self, extra_expected_params=None, bucket=None, include_checksum=True
     ):
         if bucket is None:
             bucket = self.bucket
 
+        num_parts = 3
+        parts = []
+        for part_num in range(1, num_parts + 1):
+            part = {
+                'ETag': f'etag-{part_num}',
+                'PartNumber': part_num,
+            }
+            if include_checksum:
+                part[f"Checksum{DEFAULT_CHECKSUM_ALGORITHM}"] = (
+                    f"sum{part_num}=="
+                )
+            parts.append(part)
+
         expected_params = {
             'Bucket': bucket,
             'Key': self.key,
             'UploadId': self.multipart_id,
-            'MultipartUpload': {
-                'Parts': [
-                    {
-                        'ETag': 'etag-1',
-                        'PartNumber': 1,
-                        'ChecksumCRC32': 'sum1==',
-                    },
-                    {
-                        'ETag': 'etag-2',
-                        'PartNumber': 2,
-                        'ChecksumCRC32': 'sum2==',
-                    },
-                    {
-                        'ETag': 'etag-3',
-                        'PartNumber': 3,
-                        'ChecksumCRC32': 'sum3==',
-                    },
-                ]
-            },
+            'MultipartUpload': {'Parts': parts},
         }
         if extra_expected_params:
             expected_params.update(extra_expected_params)
@@ -759,5 +796,55 @@
         future = self.manager.upload(
             self.filename, self.bucket, self.key, self.extra_args
         )
+        future.result()
+        self.assert_expected_client_calls_were_correct()
+
+    def test_multipart_upload_with_default_checksum_when_supported(self):
+        # Reset client to configure `request_checksum_calculation` to 
"when_supported".
+        self.reset_stubber_with_new_client(
+            {'config': Config(request_checksum_calculation="when_supported")}
+        )
+        self.client.meta.events.register(
+            'before-parameter-build.s3.*', self.collect_body
+        )
+        self._manager = TransferManager(self.client, self.config)
+
+        self.add_create_multipart_response_with_default_expected_params(
+            include_checksum=True
+        )
+        self.add_upload_part_responses_with_default_expected_params(
+            include_checksum=True
+        )
+        self.add_complete_multipart_response_with_default_expected_params()
+
+        future = self.manager.upload(
+            self.filename, self.bucket, self.key, self.extra_args
+        )
+        future.result()
+        self.assert_expected_client_calls_were_correct()
+
+    def test_multipart_upload_with_default_checksum_when_required(self):
+        # Reset client to configure `request_checksum_calculation` to 
"when_required".
+        self.reset_stubber_with_new_client(
+            {'config': Config(request_checksum_calculation="when_required")}
+        )
+        self.client.meta.events.register(
+            'before-parameter-build.s3.*', self.collect_body
+        )
+        self._manager = TransferManager(self.client, self.config)
+
+        self.add_create_multipart_response_with_default_expected_params(
+            include_checksum=False
+        )
+        self.add_upload_part_responses_with_default_expected_params(
+            include_checksum=False
+        )
+        self.add_complete_multipart_response_with_default_expected_params(
+            include_checksum=False
+        )
+
+        future = self.manager.upload(
+            self.filename, self.bucket, self.key, self.extra_args
+        )
         future.result()
         self.assert_expected_client_calls_were_correct()

Reply via email to