)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2d3e64c9cece0696a09457322fe2df70d352e9d3","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Remove six"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This mostly affects tests. Nothing too complicated"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Signed-off-by: Stephen Finucane \u003cstephenfin@redhat.com\u003e"},{"line_number":12,"context_line":"Change-Id: Iabc78f651e1d48db35638280722f8019798eccd6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7f77e3e3_9e361b52","line":9,"updated":"2022-03-22 04:21:45.000000000","message":"IDK -- I think most of the churn was *outside* of tests ;-)","commit_id":"fa137a5bf1f2a86cc15ebc4d973f245e1543105d"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4474dcbaa1ecc3fde70df9f24f56e2e7c87c82f6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"344f1730_d1cb9689","updated":"2022-03-22 10:12:06.000000000","message":"recheck","commit_id":"fa137a5bf1f2a86cc15ebc4d973f245e1543105d"}],"swiftclient/client.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2d3e64c9cece0696a09457322fe2df70d352e9d3","unresolved":true,"context_lines":[{"line_number":181,"context_line":"    return unquoted"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"def quote(value, safe\u003d\u0027/\u0027):"},{"line_number":185,"context_line":"    \"\"\""},{"line_number":186,"context_line":"    Patched version of urllib.quote that encodes utf8 strings before quoting."},{"line_number":187,"context_line":"    On Python 3, call directly urllib.parse.quote()."}],"source_content_type":"text/x-python","patch_set":4,"id":"6b4c4683_4aaf9f54","line":184,"updated":"2022-03-22 04:21:45.000000000","message":"We could drop this helper entirely, now.","commit_id":"fa137a5bf1f2a86cc15ebc4d973f245e1543105d"}],"swiftclient/service.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2d3e64c9cece0696a09457322fe2df70d352e9d3","unresolved":true,"context_lines":[{"line_number":321,"context_line":"    options to be specified separately for each individual object."},{"line_number":322,"context_line":"    \"\"\""},{"line_number":323,"context_line":"    def __init__(self, source, object_name\u003dNone, options\u003dNone):"},{"line_number":324,"context_line":"        if isinstance(source, string_types):"},{"line_number":325,"context_line":"            self.object_name \u003d object_name or source"},{"line_number":326,"context_line":"        elif source is None or hasattr(source, \u0027read\u0027):"},{"line_number":327,"context_line":"            if not object_name or not isinstance(object_name, string_types):"}],"source_content_type":"text/x-python","patch_set":4,"id":"276bb9ae_5624b1d6","side":"PARENT","line":324,"range":{"start_line":324,"start_character":30,"end_line":324,"end_character":42},"updated":"2022-03-22 04:21:45.000000000","message":"Off-topic: this was almost certainly a bug -- callers should *totally* be able to specify a source that is the exact bytes to be uploaded. Needing to wrap it in a BytesIO is terrible.","commit_id":"4983b909831b72b5361aadf573cadd3afaaf8976"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2d3e64c9cece0696a09457322fe2df70d352e9d3","unresolved":true,"context_lines":[{"line_number":2036,"context_line":"        for seg in segment_results:"},{"line_number":2037,"context_line":"            seg_loc \u003d seg[\u0027segment_location\u0027].lstrip(\u0027/\u0027)"},{"line_number":2038,"context_line":"            if isinstance(seg_loc, text_type):"},{"line_number":2039,"context_line":"                seg_loc \u003d seg_loc.encode(\u0027utf-8\u0027)"},{"line_number":2040,"context_line":""},{"line_number":2041,"context_line":"        manifest_data \u003d json.dumps(["},{"line_number":2042,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":4,"id":"2f80a538_9a70a013","side":"PARENT","line":2039,"range":{"start_line":2039,"start_character":16,"end_line":2039,"end_character":25},"updated":"2022-03-22 04:21:45.000000000","message":"Off-topic: this assignment bugs me. we\u0027re not actually *doing* anything with seg_loc after this -- we just want to ... idk ... make sure the json.dumps() below will succeed? Actually, this whole loop bugs me.","commit_id":"4983b909831b72b5361aadf573cadd3afaaf8976"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2d3e64c9cece0696a09457322fe2df70d352e9d3","unresolved":true,"context_lines":[{"line_number":54,"context_line":"logger \u003d logging.getLogger(\"swiftclient.service\")"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class ResultsIterator:"},{"line_number":58,"context_line":"    def __init__(self, futures):"},{"line_number":59,"context_line":"        self.futures \u003d interruptable_as_completed(futures)"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"8caa499c_d3c62802","line":57,"updated":"2022-03-22 04:21:45.000000000","message":"Oh yeah -- I bet there\u0027s a whole bunch of cleanup we could do to stop explicitly inheriting from object...","commit_id":"fa137a5bf1f2a86cc15ebc4d973f245e1543105d"}],"swiftclient/shell.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2d3e64c9cece0696a09457322fe2df70d352e9d3","unresolved":true,"context_lines":[{"line_number":1926,"context_line":"def main(arguments\u003dNone):"},{"line_number":1927,"context_line":"    argv \u003d sys_argv if arguments is None else arguments"},{"line_number":1928,"context_line":""},{"line_number":1929,"context_line":"    argv \u003d [a if isinstance(a, str) else a.decode(\u0027utf-8\u0027) for a in argv]"},{"line_number":1930,"context_line":""},{"line_number":1931,"context_line":"    parser \u003d argparse.ArgumentParser("},{"line_number":1932,"context_line":"        add_help\u003dFalse, formatter_class\u003dHelpFormatter, usage\u003d\u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"f07b3baa_7c5ea3b4","line":1929,"range":{"start_line":1929,"start_character":17,"end_line":1929,"end_character":35},"updated":"2022-03-22 04:21:45.000000000","message":"nit: Pretty sure this will always be true now.","commit_id":"fa137a5bf1f2a86cc15ebc4d973f245e1543105d"}],"test/functional/test_swiftclient.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2d3e64c9cece0696a09457322fe2df70d352e9d3","unresolved":true,"context_lines":[{"line_number":412,"context_line":"                              {u\u0027x-object-meta-\\U0001f44d\u0027: u\u0027\\U0001f44d\u0027})"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"        # Note that we can\u0027t actually read this header back on py3; see"},{"line_number":415,"context_line":"        # https://bugs.python.org/issue37093"},{"line_number":416,"context_line":"        # We\u0027ll have to settle for just testing that the POST doesn\u0027t blow up"},{"line_number":417,"context_line":"        # with a UnicodeDecodeError"},{"line_number":418,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1e16993f_6beabd48","line":415,"updated":"2022-03-22 04:21:45.000000000","message":"This situation *sucks* :-(","commit_id":"fa137a5bf1f2a86cc15ebc4d973f245e1543105d"}],"test/unit/test_multithreading.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2d3e64c9cece0696a09457322fe2df70d352e9d3","unresolved":true,"context_lines":[{"line_number":221,"context_line":"            \u0027one-argument\\n\u0027,"},{"line_number":222,"context_line":"            \u0027one fish, 88 fish\\n\u0027,"},{"line_number":223,"context_line":"            \u0027some\\n\u0027, \u0027where\\n\u0027,"},{"line_number":224,"context_line":"            over_the,"},{"line_number":225,"context_line":"            u\u0027some raw bytes: \\u062a\\u062a\u0027,"},{"line_number":226,"context_line":"            \u0027           key: value\\n\u0027,"},{"line_number":227,"context_line":"            u\u0027        object: O\\u0308bject\\n\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a28ad4d_4cb73f79","line":224,"updated":"2022-03-22 04:21:45.000000000","message":"nit: We could just inline it here, get rid of the variable.","commit_id":"fa137a5bf1f2a86cc15ebc4d973f245e1543105d"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2d3e64c9cece0696a09457322fe2df70d352e9d3","unresolved":true,"context_lines":[{"line_number":224,"context_line":"            over_the,"},{"line_number":225,"context_line":"            u\u0027some raw bytes: \\u062a\\u062a\u0027,"},{"line_number":226,"context_line":"            \u0027           key: value\\n\u0027,"},{"line_number":227,"context_line":"            u\u0027        object: O\\u0308bject\\n\u0027"},{"line_number":228,"context_line":"        ]).encode(\u0027utf8\u0027) + b\u0027\\xffugly\\xffraw\u0027, out_stream.getvalue())"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        self.assertEqual(\u0027\u0027.join(["}],"source_content_type":"text/x-python","patch_set":4,"id":"6f86dc9b_024ce7e9","line":227,"range":{"start_line":227,"start_character":12,"end_line":227,"end_character":14},"updated":"2022-03-22 04:21:45.000000000","message":"Oh hey, another bit of scarring we could clean up...","commit_id":"fa137a5bf1f2a86cc15ebc4d973f245e1543105d"}],"test/unit/utils.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2d3e64c9cece0696a09457322fe2df70d352e9d3","unresolved":true,"context_lines":[{"line_number":18,"context_line":"from requests.structures import CaseInsensitiveDict"},{"line_number":19,"context_line":"from time import sleep"},{"line_number":20,"context_line":"import unittest"},{"line_number":21,"context_line":"import mock"},{"line_number":22,"context_line":"import six"},{"line_number":23,"context_line":"import os"},{"line_number":24,"context_line":"from six.moves import reload_module"}],"source_content_type":"text/x-python","patch_set":4,"id":"1455e052_45cc6892","side":"PARENT","line":21,"updated":"2022-03-22 04:21:45.000000000","message":"Off-topic: oh yeah... we should totally be able to use unittest.mock now...","commit_id":"4983b909831b72b5361aadf573cadd3afaaf8976"}]}
