)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"e8d321b55fed738541e008fe70a27e0a1a8d0dc2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"07c9168d_08d9f816","updated":"2023-08-18 19:24:51.000000000","message":"love it!","commit_id":"8f85e27c27302ae623e4c0811515858f8d340603"}],"test/unit/common/middleware/helpers.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"25c9ff0a7c4deefdaf802c8dbcfc373ec2d81d48","unresolved":true,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        # simulate object POST"},{"line_number":206,"context_line":"        elif method \u003d\u003d \u0027POST\u0027 and obj:"},{"line_number":207,"context_line":"            metadata, data \u003d self.uploaded.get(env[\u0027PATH_INFO\u0027], ({}, None))"},{"line_number":208,"context_line":"            # select items to keep from existing..."},{"line_number":209,"context_line":"            new_metadata \u003d dict("},{"line_number":210,"context_line":"                (k, v) for k, v in metadata.items()"}],"source_content_type":"text/x-python","patch_set":1,"id":"7b2b2b16_719031d8","line":207,"updated":"2023-08-18 12:36:39.000000000","message":"this aligns with the path used to store the object in uploaded\n\nNote: uploaded is keyed with a different path w.r.t. registered requests","commit_id":"7f435863659ad045d224f19288883b919f2df83d"},{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"b427ea845bd2ed17ad7490fb6dbe15da742c6dd9","unresolved":false,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        # simulate object POST"},{"line_number":206,"context_line":"        elif method \u003d\u003d \u0027POST\u0027 and obj:"},{"line_number":207,"context_line":"            metadata, data \u003d self.uploaded.get(env[\u0027PATH_INFO\u0027], ({}, None))"},{"line_number":208,"context_line":"            # select items to keep from existing..."},{"line_number":209,"context_line":"            new_metadata \u003d dict("},{"line_number":210,"context_line":"                (k, v) for k, v in metadata.items()"}],"source_content_type":"text/x-python","patch_set":1,"id":"557f160e_98f12ba7","line":207,"in_reply_to":"7b2b2b16_719031d8","updated":"2023-08-18 19:10:26.000000000","message":"Done","commit_id":"7f435863659ad045d224f19288883b919f2df83d"},{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"b427ea845bd2ed17ad7490fb6dbe15da742c6dd9","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        else:"},{"line_number":179,"context_line":"            # special case for re-reading an uploaded file"},{"line_number":180,"context_line":"            # ... uploaded is only objects and always raw path"},{"line_number":181,"context_line":"            if method in (\u0027GET\u0027, \u0027HEAD\u0027) and env[\u0027PATH_INFO\u0027] in self.uploaded:"},{"line_number":182,"context_line":"                resp_class \u003d swob.HTTPOk"},{"line_number":183,"context_line":"                headers, body \u003d self.uploaded[env[\u0027PATH_INFO\u0027]]"},{"line_number":184,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"47e9d5a5_8978c97b","line":181,"updated":"2023-08-18 19:10:26.000000000","message":"These were the reverts i missed here, ref: https://review.opendev.org/c/openstack/swift/+/889785/29..30/test/unit/common/middleware/helpers.py, thanks for clearing that up. It would be wise to be consistent with indexing raw paths across FakeSwift","commit_id":"8f85e27c27302ae623e4c0811515858f8d340603"}],"test/unit/common/middleware/test_helpers.py":[{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"b427ea845bd2ed17ad7490fb6dbe15da742c6dd9","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        self.assertEqual((\u0027HEAD\u0027, \u0027/v1/a/c/o\u0027), swift.calls[-1])"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        req \u003d Request.blank(\u0027/v1/a/c/o\u0027)"},{"line_number":210,"context_line":"        req.method \u003d \u0027HEAD\u0027"},{"line_number":211,"context_line":"        req.query_string \u003d \u0027p\u003dq\u0027"},{"line_number":212,"context_line":"        resp \u003d req.get_response(swift)"},{"line_number":213,"context_line":"        self.assertEqual(200, resp.status_int)"}],"source_content_type":"text/x-python","patch_set":2,"id":"55a60a4e_c9b4fd23","line":210,"updated":"2023-08-18 19:10:26.000000000","message":"These tests illustrate descriptively what we were trying to incorporate with https://review.opendev.org/c/openstack/swift/+/889785, doc strings introduced in ref:https://review.opendev.org/c/openstack/swift/+/891979/2/test/unit/common/middleware/test_helpers.py#38","commit_id":"8f85e27c27302ae623e4c0811515858f8d340603"},{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"b427ea845bd2ed17ad7490fb6dbe15da742c6dd9","unresolved":false,"context_lines":[{"line_number":385,"context_line":"        # POST with different query string should update the uploaded object"},{"line_number":386,"context_line":"        req \u003d Request.blank(\u0027/v1/a/c/o\u0027, body\u003db\u0027stuff\u0027,"},{"line_number":387,"context_line":"                            headers\u003d{\u0027X-Object-Meta-Foo\u0027: \u0027Bof\u0027})"},{"line_number":388,"context_line":"        req.method \u003d \u0027POST\u0027"},{"line_number":389,"context_line":"        req.query_string \u003d \u0027x\u003dy\u0027"},{"line_number":390,"context_line":"        resp \u003d req.get_response(swift)"},{"line_number":391,"context_line":"        self.assertEqual(201, resp.status_int)"}],"source_content_type":"text/x-python","patch_set":2,"id":"e5e8d162_92ad2b72","line":388,"updated":"2023-08-18 19:10:26.000000000","message":"super","commit_id":"8f85e27c27302ae623e4c0811515858f8d340603"}],"test/unit/common/middleware/test_slo.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"25c9ff0a7c4deefdaf802c8dbcfc373ec2d81d48","unresolved":true,"context_lines":[{"line_number":850,"context_line":"        # go behind SLO\u0027s back and see what actually got stored"},{"line_number":851,"context_line":"        req \u003d Request.blank("},{"line_number":852,"context_line":"            # this string looks weird, but it\u0027s just an artifact"},{"line_number":853,"context_line":"            # of FakeSwift"},{"line_number":854,"context_line":"            \u0027/v1/AUTH_test/checktest/man_3?multipart-manifest\u003dput\u0027,"},{"line_number":855,"context_line":"            environ\u003d{\u0027REQUEST_METHOD\u0027: \u0027GET\u0027})"},{"line_number":856,"context_line":"        status, headers, body \u003d self.call_app(req)"}],"source_content_type":"text/x-python","patch_set":1,"id":"d1022af0_3a82f761","side":"PARENT","line":853,"updated":"2023-08-18 12:36:39.000000000","message":"I think we fixed the weirdness???","commit_id":"7a3eed9c4b5d0efc5ac14be07ea85a10615f5ce7"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"e8d321b55fed738541e008fe70a27e0a1a8d0dc2","unresolved":false,"context_lines":[{"line_number":850,"context_line":"        # go behind SLO\u0027s back and see what actually got stored"},{"line_number":851,"context_line":"        req \u003d Request.blank("},{"line_number":852,"context_line":"            # this string looks weird, but it\u0027s just an artifact"},{"line_number":853,"context_line":"            # of FakeSwift"},{"line_number":854,"context_line":"            \u0027/v1/AUTH_test/checktest/man_3?multipart-manifest\u003dput\u0027,"},{"line_number":855,"context_line":"            environ\u003d{\u0027REQUEST_METHOD\u0027: \u0027GET\u0027})"},{"line_number":856,"context_line":"        status, headers, body \u003d self.call_app(req)"}],"source_content_type":"text/x-python","patch_set":1,"id":"89dcd3e7_6689ee11","side":"PARENT","line":853,"in_reply_to":"247c778d_01d7354d","updated":"2023-08-18 19:24:51.000000000","message":"yes!  beat out the weirdness!  that is awesome!","commit_id":"7a3eed9c4b5d0efc5ac14be07ea85a10615f5ce7"},{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"b427ea845bd2ed17ad7490fb6dbe15da742c6dd9","unresolved":false,"context_lines":[{"line_number":850,"context_line":"        # go behind SLO\u0027s back and see what actually got stored"},{"line_number":851,"context_line":"        req \u003d Request.blank("},{"line_number":852,"context_line":"            # this string looks weird, but it\u0027s just an artifact"},{"line_number":853,"context_line":"            # of FakeSwift"},{"line_number":854,"context_line":"            \u0027/v1/AUTH_test/checktest/man_3?multipart-manifest\u003dput\u0027,"},{"line_number":855,"context_line":"            environ\u003d{\u0027REQUEST_METHOD\u0027: \u0027GET\u0027})"},{"line_number":856,"context_line":"        status, headers, body \u003d self.call_app(req)"}],"source_content_type":"text/x-python","patch_set":1,"id":"247c778d_01d7354d","side":"PARENT","line":853,"in_reply_to":"d1022af0_3a82f761","updated":"2023-08-18 19:10:26.000000000","message":"Done","commit_id":"7a3eed9c4b5d0efc5ac14be07ea85a10615f5ce7"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"e8d321b55fed738541e008fe70a27e0a1a8d0dc2","unresolved":true,"context_lines":[{"line_number":1088,"context_line":"            # this string looks weird, but it\u0027s just an artifact"},{"line_number":1089,"context_line":"            # of FakeSwift"},{"line_number":1090,"context_line":"            \u0027/v1/AUTH_test/checktest/man_3?multipart-manifest\u003dput\u0027,"},{"line_number":1091,"context_line":"            environ\u003d{\u0027REQUEST_METHOD\u0027: \u0027GET\u0027})"},{"line_number":1092,"context_line":"        status, headers, body \u003d self.call_app(req)"},{"line_number":1093,"context_line":"        manifest_data \u003d json.loads(body)"},{"line_number":1094,"context_line":"        self.assertEqual(len(manifest_data), 5)"}],"source_content_type":"text/x-python","patch_set":2,"id":"f25a3a74_3ccab4d0","side":"PARENT","line":1091,"updated":"2023-08-18 19:24:51.000000000","message":"wow, nice cleanup!","commit_id":"746daad3376f43d66c8a48ca1079086555f82136"}]}
