)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"eee2585b2ddf516a2f60f2c3ff24da205301880d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c2d9e05b_e0e47b19","updated":"2026-08-20 08:38:41.000000000","message":"LGTM.\n\nJust one small suggestion before merging - wdyt about putting the headers at module level?","commit_id":"3aab4448a83acb12b3b82be39a107dcc37125ea5"}],"swift/common/middleware/s3api/s3request.py":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"eee2585b2ddf516a2f60f2c3ff24da205301880d","unresolved":true,"context_lines":[{"line_number":113,"context_line":"    \u0027x-object-manifest\u0027,"},{"line_number":114,"context_line":"    \u0027x-static-large-object\u0027,"},{"line_number":115,"context_line":"))"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"CHECKSUMS_BY_HEADER \u003d {"},{"line_number":119,"context_line":"    \u0027x-amz-checksum-crc32\u0027: checksum.crc32,"}],"source_content_type":"text/x-python","patch_set":2,"id":"86bf3d1c_cf968514","line":116,"updated":"2026-08-20 08:38:41.000000000","message":"For example:\n\n```\nALLOWED_COPY_SOURCE_HEADERS \u003d (\n    \u0027Range\u0027,\n    \u0027If-Match\u0027,\n    \u0027If-None-Match\u0027,\n    \u0027If-Modified-Since\u0027,\n    \u0027If-Unmodified-Since\u0027,\n)\n```","commit_id":"3aab4448a83acb12b3b82be39a107dcc37125ea5"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"d5cff68cb63daf2efe9f3d63181bc24e7e1d23fc","unresolved":true,"context_lines":[{"line_number":113,"context_line":"    \u0027x-object-manifest\u0027,"},{"line_number":114,"context_line":"    \u0027x-static-large-object\u0027,"},{"line_number":115,"context_line":"))"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"CHECKSUMS_BY_HEADER \u003d {"},{"line_number":119,"context_line":"    \u0027x-amz-checksum-crc32\u0027: checksum.crc32,"}],"source_content_type":"text/x-python","patch_set":2,"id":"aa94e326_7e7bcac8","line":116,"in_reply_to":"86bf3d1c_cf968514","updated":"2026-08-20 09:16:15.000000000","message":"I like that, but I\u0027d define them in terms of x-amz-* headers in this context","commit_id":"3aab4448a83acb12b3b82be39a107dcc37125ea5"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"17bf4b85ba73d12a00f2afa63cd2fc9719c08ac9","unresolved":true,"context_lines":[{"line_number":113,"context_line":"    \u0027x-object-manifest\u0027,"},{"line_number":114,"context_line":"    \u0027x-static-large-object\u0027,"},{"line_number":115,"context_line":"))"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"CHECKSUMS_BY_HEADER \u003d {"},{"line_number":119,"context_line":"    \u0027x-amz-checksum-crc32\u0027: checksum.crc32,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1326a94e_a2b169f6","line":116,"in_reply_to":"aa94e326_7e7bcac8","updated":"2026-08-20 09:31:28.000000000","message":"Even better, also matches better with the previous and next header blocks.","commit_id":"3aab4448a83acb12b3b82be39a107dcc37125ea5"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"eee2585b2ddf516a2f60f2c3ff24da205301880d","unresolved":true,"context_lines":[{"line_number":1795,"context_line":""},{"line_number":1796,"context_line":"        headers \u003d swob.HeaderKeyDict()"},{"line_number":1797,"context_line":"        # translate allowed copy-source headers..."},{"line_number":1798,"context_line":"        for sw_header in (\u0027Range\u0027,"},{"line_number":1799,"context_line":"                          \u0027If-Match\u0027,"},{"line_number":1800,"context_line":"                          \u0027If-None-Match\u0027,"},{"line_number":1801,"context_line":"                          \u0027If-Modified-Since\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"e8eb4f9f_56ca541b","line":1798,"updated":"2026-08-20 08:38:41.000000000","message":"If we do use the headers from module level, this would become\n\n```\nfor sw_header in ALLOWED_COPY_SOURCE_HEADERS:\n```","commit_id":"3aab4448a83acb12b3b82be39a107dcc37125ea5"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"d5cff68cb63daf2efe9f3d63181bc24e7e1d23fc","unresolved":false,"context_lines":[{"line_number":1795,"context_line":""},{"line_number":1796,"context_line":"        headers \u003d swob.HeaderKeyDict()"},{"line_number":1797,"context_line":"        # translate allowed copy-source headers..."},{"line_number":1798,"context_line":"        for sw_header in (\u0027Range\u0027,"},{"line_number":1799,"context_line":"                          \u0027If-Match\u0027,"},{"line_number":1800,"context_line":"                          \u0027If-None-Match\u0027,"},{"line_number":1801,"context_line":"                          \u0027If-Modified-Since\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5800e732_e1cce5b0","line":1798,"in_reply_to":"e8eb4f9f_56ca541b","updated":"2026-08-20 09:16:15.000000000","message":"Acknowledged","commit_id":"3aab4448a83acb12b3b82be39a107dcc37125ea5"}]}
