)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"change_message_id":"efcd7b90c07b41a2ae7b8c2b1fa178bedd6cb4ac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":64,"id":"4dd560ae_ac8854cb","updated":"2026-08-06 16:25:21.000000000","message":"Need to add default checksums on MPUs","commit_id":"72125b3bdfdf7e6916033b8397b4ae8db1e0dd96"},{"author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"change_message_id":"76810274cb71f9b9384a4b4a927d8b92655c6260","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":65,"id":"bf6ed8af_db0556ef","updated":"2026-08-07 17:06:43.000000000","message":"mpu stuff needed still...","commit_id":"2706c3a8956158b1f5a6fd50d2abdffc4020fe68"}],"swift/common/middleware/s3api/s3request.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"08a81277a719b505b27b64d63309a47d33fb7204","unresolved":false,"context_lines":[{"line_number":1596,"context_line":"                \u0027checksum algorithm.\u0027 % ("},{"line_number":1597,"context_line":"                    checksum_type, checksum_algorithm.lower()))"},{"line_number":1598,"context_line":"        if checksum_type \u003d\u003d CHECKSUM_TYPE_FULL_OBJECT:"},{"line_number":1599,"context_line":"            checksum_header \u003d checksum_header_from_algorithm(checksum_algorithm)"},{"line_number":1600,"context_line":"            try:"},{"line_number":1601,"context_line":"                checksum_hasher \u003d CHECKSUMS_BY_HEADER[checksum_header]()"},{"line_number":1602,"context_line":"            except NotImplementedError:"}],"source_content_type":"text/x-python","patch_set":19,"id":"65375d79_f01d1df0","line":1599,"updated":"2026-07-09 20:01:56.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"df9bf10e437b774377aac9b82baa23db71d81905"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"df304c07ab5c45542c761c3a8ca43bed040076b8","unresolved":false,"context_lines":[{"line_number":1920,"context_line":"        Install a callback to persist checksum metadata after validation."},{"line_number":1921,"context_line":"        If checksum calculation fails (say for instance, the connection drops),"},{"line_number":1922,"context_line":"        the PUT fails before a checksum is recorded, so no checksum sysmeta is"},{"line_number":1923,"context_line":"        persisted. Once Swift reads in the entire object, the checksum is finshed"},{"line_number":1924,"context_line":"        and sysmeta is attached to the uploaded whole-object body."},{"line_number":1925,"context_line":"        :param checksum_type: The type of checksum to persist."},{"line_number":1926,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":31,"id":"43b379b2_398a37af","line":1923,"updated":"2026-07-20 22:05:46.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"520645ec934055580a090314fc58c74736a0636d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"df304c07ab5c45542c761c3a8ca43bed040076b8","unresolved":false,"context_lines":[{"line_number":1939,"context_line":"    def calculate_checksum_metadata(self, checksum_header,"},{"line_number":1940,"context_line":"                                    checksum_type\u003dNone):"},{"line_number":1941,"context_line":"        \"\"\""},{"line_number":1942,"context_line":"        Specify that in this S3Request, we need to calcuate the checksum for the"},{"line_number":1943,"context_line":"        object because the client did not specify any checksum algorithm."},{"line_number":1944,"context_line":"        :param checksum_header: The header to calcuated for this object."},{"line_number":1945,"context_line":"        :param checksum_type: The type of this checksum for this object."}],"source_content_type":"text/x-python","patch_set":31,"id":"8a9ea765_4b36b3aa","line":1942,"updated":"2026-07-20 22:05:46.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"520645ec934055580a090314fc58c74736a0636d"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"06599b2ec2ce0fd0a7f6becbcffeaab9f90cc1cd","unresolved":false,"context_lines":[{"line_number":1763,"context_line":"        here."},{"line_number":1764,"context_line":"        \"\"\""},{"line_number":1765,"context_line":"        return ("},{"line_number":1766,"context_line":"            self._should_handle_request_checksum(self.method) and \\"},{"line_number":1767,"context_line":"            checksum_header is None and"},{"line_number":1768,"context_line":"            checksum_trailer is None)"},{"line_number":1769,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"2cabbe9b_a5710dba","line":1766,"updated":"2026-07-21 01:16:31.000000000","message":"pep8: E502 the backslash is redundant between brackets","commit_id":"a53dd02669f64a0650f671df2588e940e5e91781"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"70e075f706baeb8a9628fabd4dedca1093b4ae7c","unresolved":false,"context_lines":[{"line_number":1934,"context_line":"        Specify that in this S3Request, we need to calculate the checksum for"},{"line_number":1935,"context_line":"        the object because the client did not specify any checksum algorithm."},{"line_number":1936,"context_line":""},{"line_number":1937,"context_line":"        If request parsing already installed a CalculatingChecksumInput wrapper,"},{"line_number":1938,"context_line":"        replace that wrapper rather than putting another on top of it."},{"line_number":1939,"context_line":"        Let\u0027s not compute two checksum algorithms for one S3Request. Controllers"},{"line_number":1940,"context_line":"        may discover a more specific checksum algorithm, such as an UploadPart request"}],"source_content_type":"text/x-python","patch_set":39,"id":"a7bbeebf_1f3282d4","line":1937,"updated":"2026-07-21 23:46:41.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"4b2c59cbfda89b58f5a81d435d736fec32371a6c"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"70e075f706baeb8a9628fabd4dedca1093b4ae7c","unresolved":false,"context_lines":[{"line_number":1936,"context_line":""},{"line_number":1937,"context_line":"        If request parsing already installed a CalculatingChecksumInput wrapper,"},{"line_number":1938,"context_line":"        replace that wrapper rather than putting another on top of it."},{"line_number":1939,"context_line":"        Let\u0027s not compute two checksum algorithms for one S3Request. Controllers"},{"line_number":1940,"context_line":"        may discover a more specific checksum algorithm, such as an UploadPart request"},{"line_number":1941,"context_line":"        deciding to use the algorithm on the MPU manifest, before the body is read."},{"line_number":1942,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"1c05a72a_03da599e","line":1939,"updated":"2026-07-21 23:46:41.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"4b2c59cbfda89b58f5a81d435d736fec32371a6c"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"70e075f706baeb8a9628fabd4dedca1093b4ae7c","unresolved":false,"context_lines":[{"line_number":1937,"context_line":"        If request parsing already installed a CalculatingChecksumInput wrapper,"},{"line_number":1938,"context_line":"        replace that wrapper rather than putting another on top of it."},{"line_number":1939,"context_line":"        Let\u0027s not compute two checksum algorithms for one S3Request. Controllers"},{"line_number":1940,"context_line":"        may discover a more specific checksum algorithm, such as an UploadPart request"},{"line_number":1941,"context_line":"        deciding to use the algorithm on the MPU manifest, before the body is read."},{"line_number":1942,"context_line":""},{"line_number":1943,"context_line":"        :param checksum_header: The header to calculate for this object."}],"source_content_type":"text/x-python","patch_set":39,"id":"cb9d876a_8013676c","line":1940,"updated":"2026-07-21 23:46:41.000000000","message":"pep8: E501 line too long (86 \u003e 79 characters)","commit_id":"4b2c59cbfda89b58f5a81d435d736fec32371a6c"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"70e075f706baeb8a9628fabd4dedca1093b4ae7c","unresolved":false,"context_lines":[{"line_number":1938,"context_line":"        replace that wrapper rather than putting another on top of it."},{"line_number":1939,"context_line":"        Let\u0027s not compute two checksum algorithms for one S3Request. Controllers"},{"line_number":1940,"context_line":"        may discover a more specific checksum algorithm, such as an UploadPart request"},{"line_number":1941,"context_line":"        deciding to use the algorithm on the MPU manifest, before the body is read."},{"line_number":1942,"context_line":""},{"line_number":1943,"context_line":"        :param checksum_header: The header to calculate for this object."},{"line_number":1944,"context_line":"        :param checksum_type: The type of this checksum for this object."}],"source_content_type":"text/x-python","patch_set":39,"id":"49ec5e7e_260c4d8d","line":1941,"updated":"2026-07-21 23:46:41.000000000","message":"pep8: E501 line too long (83 \u003e 79 characters)","commit_id":"4b2c59cbfda89b58f5a81d435d736fec32371a6c"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"1e36a99e56b367d0ce0b864359b45bae89fda5f6","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    \u0027x-static-large-object\u0027,"},{"line_number":118,"context_line":"))"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"def _get_checksum_hasher(header):"},{"line_number":121,"context_line":"    try:"},{"line_number":122,"context_line":"        return CHECKSUMS_BY_HEADER[header]()"},{"line_number":123,"context_line":"    except (KeyError, NotImplementedError):"}],"source_content_type":"text/x-python","patch_set":51,"id":"9ec905a7_aab40eaf","line":120,"updated":"2026-07-28 18:57:15.000000000","message":"pep8: E302 expected 2 blank lines, found 1","commit_id":"a7df5b81881328e0220a2698fbc63174e85483e4"}],"swift/common/middleware/s3api/utils.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"1cd604f5f7a4625d7d70a927575c17d7e545b8ae","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    \u0027x-amz-checksum-sha1\u0027: \u0027ChecksumSHA1\u0027,"},{"line_number":59,"context_line":"    \u0027x-amz-checksum-sha256\u0027: \u0027ChecksumSHA256\u0027,"},{"line_number":60,"context_line":"}"},{"line_number":61,"context_line":"def checksum_header_from_algorithm(algorithm):"},{"line_number":62,"context_line":"    \"\"\""},{"line_number":63,"context_line":"    Return the canonical x-amz-checksum-* header for an S3 checksum algorithm."},{"line_number":64,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"cd620f02_64dde56e","line":61,"updated":"2026-07-06 20:38:27.000000000","message":"pep8: E302 expected 2 blank lines, found 0","commit_id":"e40d46cb64d469f343eda7f8896af841849e3940"}],"test/s3api/test_object_checksums.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ccf917b9a23f8672b239bb18f14b7bd58bcb8a3e","unresolved":false,"context_lines":[{"line_number":1449,"context_line":"        self.assertEqual(200, resp.status_code, resp.content)"},{"line_number":1450,"context_line":"        self.assertEqual(\u0027rosUhgp5mIg\u003d\u0027, resp.headers.get("},{"line_number":1451,"context_line":"            \u0027x-amz-checksum-crc64nvme\u0027))"},{"line_number":1452,"context_line":"        self.assertEqual(CHECKSUM_TYPE_FULL_OBJECT_VALUE, resp.headers.get("},{"line_number":1453,"context_line":"            CHECKSUM_TYPE_HDR))"}],"source_content_type":"text/x-python","patch_set":5,"id":"b25c7f5b_4b9b22d9","line":1452,"updated":"2026-06-25 18:01:19.000000000","message":"pep8: F821 undefined name \u0027CHECKSUM_TYPE_FULL_OBJECT_VALUE\u0027","commit_id":"240519a499942a66e7f1218fb036ee19456df9fa"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ccf917b9a23f8672b239bb18f14b7bd58bcb8a3e","unresolved":false,"context_lines":[{"line_number":1450,"context_line":"        self.assertEqual(\u0027rosUhgp5mIg\u003d\u0027, resp.headers.get("},{"line_number":1451,"context_line":"            \u0027x-amz-checksum-crc64nvme\u0027))"},{"line_number":1452,"context_line":"        self.assertEqual(CHECKSUM_TYPE_FULL_OBJECT_VALUE, resp.headers.get("},{"line_number":1453,"context_line":"            CHECKSUM_TYPE_HDR))"}],"source_content_type":"text/x-python","patch_set":5,"id":"c6455e7a_49092ce9","line":1453,"updated":"2026-06-25 18:01:19.000000000","message":"pep8: F821 undefined name \u0027CHECKSUM_TYPE_HDR\u0027","commit_id":"240519a499942a66e7f1218fb036ee19456df9fa"}],"test/unit/common/middleware/s3api/test_multi_upload.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"e2b4f1d0e7109597765a65630201c31e61a65804","unresolved":false,"context_lines":[{"line_number":33,"context_line":"from swift.common.utils import checksum, json, md5"},{"line_number":34,"context_line":"from swift.common.utils.timestamp import Timestamp, NormalTimestamp"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"from test.unit import FakeMemcache, patch_policies, mock_normal_timestamp_now, \\"},{"line_number":37,"context_line":"    requires_crc64nvme"},{"line_number":38,"context_line":"from test.unit.common.middleware.s3api import S3ApiTestCase, S3ApiTestCaseAcl"},{"line_number":39,"context_line":"from test.unit.common.middleware.s3api.helpers import UnreadableInput"}],"source_content_type":"text/x-python","patch_set":70,"id":"9765e935_a6d32b36","line":36,"updated":"2026-08-10 16:46:17.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"31b00f436bcbdb200ecd69af7e8026379acd58db"}],"test/unit/common/middleware/s3api/test_s3request.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"08a81277a719b505b27b64d63309a47d33fb7204","unresolved":false,"context_lines":[{"line_number":2754,"context_line":"                                     \u0027X-Amz-Checksum-Type\u0027: \u0027full_object\u0027})"},{"line_number":2755,"context_line":""},{"line_number":2756,"context_line":"        with mock.patch.object(checksum, \u0027crc32_combine_anycrc\u0027, None):"},{"line_number":2757,"context_line":"            with self.assertRaises(S3NotImplemented) as cm:"},{"line_number":2758,"context_line":"                S3Request(req.environ)"},{"line_number":2759,"context_line":""},{"line_number":2760,"context_line":"    def test_mpu_initiate_crc32_default_checksum_type(self):"}],"source_content_type":"text/x-python","patch_set":19,"id":"b42872f5_b956589b","line":2757,"updated":"2026-07-09 20:01:56.000000000","message":"pep8: F841 local variable \u0027cm\u0027 is assigned to but never used","commit_id":"df9bf10e437b774377aac9b82baa23db71d81905"}]}
