)]}'
{"swift/common/middleware/s3api/controllers/multi_upload.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"b890aaf2db8aa9565e002f0884cf12a1e154989d","unresolved":true,"context_lines":[{"line_number":109,"context_line":"MAX_COMPLETE_UPLOAD_BODY_SIZE \u003d 2048 * 1024"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"def _get_checksum_hasher(header, require_combine\u003dFalse):"},{"line_number":113,"context_line":"    \"\"\""},{"line_number":114,"context_line":"    Return an S3 checksum hasher or raise an S3 response error."},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"c8e0ef47_4c8c0346","line":112,"updated":"2026-08-26 15:20:52.000000000","message":"full disclosure: Claude disagrees with me about this renaming","commit_id":"62b14511fba0bf32c40e92022416b42926de32b2"},{"author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"change_message_id":"8c4b55c15d6e8cfa4e37febaff2bcff305393455","unresolved":true,"context_lines":[{"line_number":128,"context_line":"        raise S3NotImplemented(str(err))"},{"line_number":129,"context_line":"    if require_combine and not hasher.can_combine:"},{"line_number":130,"context_line":"        raise S3NotImplemented("},{"line_number":131,"context_line":"            \u0027The %s algorithm is not supported for full object \u0027"},{"line_number":132,"context_line":"            \u0027checksum calculation.\u0027 % header)"},{"line_number":133,"context_line":"    return hasher"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"415ef7de_6f973482","line":131,"range":{"start_line":131,"start_character":0,"end_line":131,"end_character":64},"updated":"2026-08-27 05:30:36.000000000","message":"I think we can make this message a bit better...\n```\n        raise S3NotImplemented(\n            \u0027The %s algorithm supports full object checksums, but this \u0027\n            \u0027server is missing the CRC combine support required to \u0027\n            \u0027calculate them.\u0027 % checksum_algorithm_from_header(header).lower())\n```","commit_id":"62b14511fba0bf32c40e92022416b42926de32b2"}],"swift/common/utils/checksum.py":[{"author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"change_message_id":"8c4b55c15d6e8cfa4e37febaff2bcff305393455","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        :param name: Name of the hasher"},{"line_number":180,"context_line":"        :param crc_func: Function to compute the CRC."},{"line_number":181,"context_line":"        :param crc_combine_func: Function to combine two CRC values."},{"line_number":182,"context_line":"        :param data: Data to update the hasher."},{"line_number":183,"context_line":"        :param initial_value: Initial CRC value."},{"line_number":184,"context_line":"        :param width: Width (in bits) of CRC values."}],"source_content_type":"text/x-python","patch_set":1,"id":"20be9bea_f13cbb13","line":181,"range":{"start_line":181,"start_character":0,"end_line":181,"end_character":68},"updated":"2026-08-27 05:30:36.000000000","message":"Hmmmm well yea it makes sense to put the crc_\u0027s together!","commit_id":"62b14511fba0bf32c40e92022416b42926de32b2"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"b890aaf2db8aa9565e002f0884cf12a1e154989d","unresolved":true,"context_lines":[{"line_number":278,"context_line":"        if not self.can_combine:"},{"line_number":279,"context_line":"            raise NotImplementedError("},{"line_number":280,"context_line":"                \u0027no combine implementation, install anycrc\u0027)"},{"line_number":281,"context_line":"        self.crc \u003d self.crc_combine_func(self.crc, other_crc, other_len)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"def crc32(data\u003dNone, initial_value\u003d0):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3b881b35_e1d98899","line":281,"updated":"2026-08-26 15:20:52.000000000","message":"this change relates to this comment https://review.opendev.org/c/openstack/swift/+/1002386/4/swift/common/utils/checksum.py#190","commit_id":"62b14511fba0bf32c40e92022416b42926de32b2"}],"test/unit/common/utils/test_checksum.py":[{"author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"change_message_id":"8c4b55c15d6e8cfa4e37febaff2bcff305393455","unresolved":false,"context_lines":[{"line_number":301,"context_line":"    def test_combine_needs_configured_func(self):"},{"line_number":302,"context_line":"        hasher \u003d checksum.CRCHasher(\u0027fake\u0027, mock.MagicMock(), None,"},{"line_number":303,"context_line":"                                    initial_value\u003d0xbad1)"},{"line_number":304,"context_line":"        self.assertFalse(hasher.can_combine)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        with self.assertRaises(NotImplementedError) as caught:"},{"line_number":307,"context_line":"            hasher.combine(2, 3)"}],"source_content_type":"text/x-python","patch_set":1,"id":"6789f2f1_2e16ed56","line":304,"range":{"start_line":304,"start_character":0,"end_line":304,"end_character":44},"updated":"2026-08-27 05:30:36.000000000","message":"This is a nice touch to the test","commit_id":"62b14511fba0bf32c40e92022416b42926de32b2"}]}
