)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"2c67948e319f88933f703fc983742c0ecac922f8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"842fa2a1_c6255671","updated":"2023-09-06 12:09:50.000000000","message":"fixed some minor stuff, LGTM","commit_id":"451ae26a8b7115a202b856da220fc639b5fabdea"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"1c19334da442238fc9f655f2f39e5ca3b61623b3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"2e245192_757b8b6d","updated":"2023-09-06 19:54:42.000000000","message":"thanks for the fixups Al!","commit_id":"451ae26a8b7115a202b856da220fc639b5fabdea"}],"swift/common/request_helpers.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"89c59c52ea6656faf4242485ea783f319d806cb2","unresolved":true,"context_lines":[{"line_number":906,"context_line":"    the X-Backend-Ignore-Range-If-Metadata-Present header is found."},{"line_number":907,"context_line":""},{"line_number":908,"context_line":"    :param req: a swob Request"},{"line_number":909,"context_line":"    :param name: dictionary of object meatadata"},{"line_number":910,"context_line":"    \"\"\""},{"line_number":911,"context_line":"    ignore_range_headers \u003d set("},{"line_number":912,"context_line":"        h.strip().lower()"}],"source_content_type":"text/x-python","patch_set":2,"id":"765a4339_1e9df5e8","line":909,"range":{"start_line":909,"start_character":38,"end_line":909,"end_character":47},"updated":"2023-09-06 12:08:27.000000000","message":"s/meatadata/metadata/\n\nmeatadata does sound tasty though!","commit_id":"e6f5ec39e631c24c124ca88610c88a838f7c6d11"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"89c59c52ea6656faf4242485ea783f319d806cb2","unresolved":true,"context_lines":[{"line_number":906,"context_line":"    the X-Backend-Ignore-Range-If-Metadata-Present header is found."},{"line_number":907,"context_line":""},{"line_number":908,"context_line":"    :param req: a swob Request"},{"line_number":909,"context_line":"    :param name: dictionary of object meatadata"},{"line_number":910,"context_line":"    \"\"\""},{"line_number":911,"context_line":"    ignore_range_headers \u003d set("},{"line_number":912,"context_line":"        h.strip().lower()"}],"source_content_type":"text/x-python","patch_set":2,"id":"35c02fae_d84744ce","line":909,"range":{"start_line":909,"start_character":11,"end_line":909,"end_character":15},"updated":"2023-09-06 12:08:27.000000000","message":"s/name/metadata/","commit_id":"e6f5ec39e631c24c124ca88610c88a838f7c6d11"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"2c67948e319f88933f703fc983742c0ecac922f8","unresolved":false,"context_lines":[{"line_number":906,"context_line":"    the X-Backend-Ignore-Range-If-Metadata-Present header is found."},{"line_number":907,"context_line":""},{"line_number":908,"context_line":"    :param req: a swob Request"},{"line_number":909,"context_line":"    :param name: dictionary of object meatadata"},{"line_number":910,"context_line":"    \"\"\""},{"line_number":911,"context_line":"    ignore_range_headers \u003d set("},{"line_number":912,"context_line":"        h.strip().lower()"}],"source_content_type":"text/x-python","patch_set":2,"id":"b94c5782_16bebb96","line":909,"range":{"start_line":909,"start_character":11,"end_line":909,"end_character":15},"in_reply_to":"35c02fae_d84744ce","updated":"2023-09-06 12:09:50.000000000","message":"Done","commit_id":"e6f5ec39e631c24c124ca88610c88a838f7c6d11"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"2c67948e319f88933f703fc983742c0ecac922f8","unresolved":false,"context_lines":[{"line_number":906,"context_line":"    the X-Backend-Ignore-Range-If-Metadata-Present header is found."},{"line_number":907,"context_line":""},{"line_number":908,"context_line":"    :param req: a swob Request"},{"line_number":909,"context_line":"    :param name: dictionary of object meatadata"},{"line_number":910,"context_line":"    \"\"\""},{"line_number":911,"context_line":"    ignore_range_headers \u003d set("},{"line_number":912,"context_line":"        h.strip().lower()"}],"source_content_type":"text/x-python","patch_set":2,"id":"17b64e42_15bc9cb1","line":909,"range":{"start_line":909,"start_character":38,"end_line":909,"end_character":47},"in_reply_to":"765a4339_1e9df5e8","updated":"2023-09-06 12:09:50.000000000","message":"Done","commit_id":"e6f5ec39e631c24c124ca88610c88a838f7c6d11"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"89c59c52ea6656faf4242485ea783f319d806cb2","unresolved":true,"context_lines":[{"line_number":912,"context_line":"        h.strip().lower()"},{"line_number":913,"context_line":"        for h in req.headers.get("},{"line_number":914,"context_line":"            \u0027X-Backend-Ignore-Range-If-Metadata-Present\u0027,"},{"line_number":915,"context_line":"            \u0027\u0027).split(\u0027,\u0027))"},{"line_number":916,"context_line":"    if ignore_range_headers.intersection("},{"line_number":917,"context_line":"            h.lower() for h in metadata):"},{"line_number":918,"context_line":"        req.headers.pop(\u0027Range\u0027, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"eafbdfe0_23c6701b","line":915,"updated":"2023-09-06 12:08:27.000000000","message":"we have utils.list_from_csv...but it doesn\u0027t lower the case :/","commit_id":"e6f5ec39e631c24c124ca88610c88a838f7c6d11"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"2c67948e319f88933f703fc983742c0ecac922f8","unresolved":false,"context_lines":[{"line_number":912,"context_line":"        h.strip().lower()"},{"line_number":913,"context_line":"        for h in req.headers.get("},{"line_number":914,"context_line":"            \u0027X-Backend-Ignore-Range-If-Metadata-Present\u0027,"},{"line_number":915,"context_line":"            \u0027\u0027).split(\u0027,\u0027))"},{"line_number":916,"context_line":"    if ignore_range_headers.intersection("},{"line_number":917,"context_line":"            h.lower() for h in metadata):"},{"line_number":918,"context_line":"        req.headers.pop(\u0027Range\u0027, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"e2b7ed60_607ea582","line":915,"in_reply_to":"eafbdfe0_23c6701b","updated":"2023-09-06 12:09:50.000000000","message":"Done","commit_id":"e6f5ec39e631c24c124ca88610c88a838f7c6d11"}],"test/unit/common/middleware/helpers.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"89c59c52ea6656faf4242485ea783f319d806cb2","unresolved":true,"context_lines":[{"line_number":273,"context_line":"        conditional_etag \u003d resolve_etag_is_at_header(req, headers)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        if self.can_ignore_range:"},{"line_number":276,"context_line":"            # avoid popping range from original environ"},{"line_number":277,"context_line":"            req \u003d swob.Request(dict(req.environ))"},{"line_number":278,"context_line":"            resolve_ignore_range_header(req, headers)"},{"line_number":279,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"4aa2f71f_2613bc9d","line":276,"updated":"2023-09-06 12:08:27.000000000","message":"+1","commit_id":"e6f5ec39e631c24c124ca88610c88a838f7c6d11"}],"test/unit/common/middleware/test_helpers.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"89c59c52ea6656faf4242485ea783f319d806cb2","unresolved":true,"context_lines":[{"line_number":470,"context_line":"        resp \u003d req.get_response(swift)"},{"line_number":471,"context_line":"        self.assertEqual(200, resp.status_int)"},{"line_number":472,"context_line":"        self.assertEqual(b\u0027stuff\u0027, resp.body)"},{"line_number":473,"context_line":"        self.assertNotIn(\u0027Content-Range\u0027, resp.headers)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"    def test_range_ignore_range_header_old_swift(self):"},{"line_number":476,"context_line":"        swift \u003d FakeSwift()"}],"source_content_type":"text/x-python","patch_set":2,"id":"f15866a6_14e43f50","line":473,"updated":"2023-09-06 12:08:27.000000000","message":"we could assert that the original and captured request headers still have the Range header","commit_id":"e6f5ec39e631c24c124ca88610c88a838f7c6d11"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"2c67948e319f88933f703fc983742c0ecac922f8","unresolved":false,"context_lines":[{"line_number":470,"context_line":"        resp \u003d req.get_response(swift)"},{"line_number":471,"context_line":"        self.assertEqual(200, resp.status_int)"},{"line_number":472,"context_line":"        self.assertEqual(b\u0027stuff\u0027, resp.body)"},{"line_number":473,"context_line":"        self.assertNotIn(\u0027Content-Range\u0027, resp.headers)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"    def test_range_ignore_range_header_old_swift(self):"},{"line_number":476,"context_line":"        swift \u003d FakeSwift()"}],"source_content_type":"text/x-python","patch_set":2,"id":"e4bad01c_db38ef9a","line":473,"in_reply_to":"f15866a6_14e43f50","updated":"2023-09-06 12:09:50.000000000","message":"Done","commit_id":"e6f5ec39e631c24c124ca88610c88a838f7c6d11"}],"test/unit/common/middleware/test_slo.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"89c59c52ea6656faf4242485ea783f319d806cb2","unresolved":true,"context_lines":[{"line_number":2097,"context_line":"            body)"},{"line_number":2098,"context_line":""},{"line_number":2099,"context_line":""},{"line_number":2100,"context_line":"class TestSloGetOldManifests(SloTestCase):"},{"line_number":2101,"context_line":"    def setUp(self):"},{"line_number":2102,"context_line":"        super(TestSloGetOldManifests, self).setUp()"},{"line_number":2103,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"2ef0d0ab_74222428","line":2100,"updated":"2023-09-06 12:08:27.000000000","message":"+1 \u0027Old\u0027 in the sense that the etag and size sysmeta are not included in the object metadata\n\ncurious that there isn\u0027t a \u0027new\u0027 version of these tests","commit_id":"e6f5ec39e631c24c124ca88610c88a838f7c6d11"}]}
