)]}'
{"swift/common/direct_client.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"be284a1c8a1e52ca6064e778775eec9a19d175aa","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        # the exception"},{"line_number":44,"context_line":"        host \u003d host if host is not None else node"},{"line_number":45,"context_line":"        if not isinstance(path, six.text_type):"},{"line_number":46,"context_line":"            path \u003d path.decode(\"utf-8\")"},{"line_number":47,"context_line":"        full_path \u003d quote(\u0027/%s/%s%s\u0027 % (node[\u0027device\u0027], part, path))"},{"line_number":48,"context_line":"        msg \u003d \u0027%s server %s:%s direct %s %r gave status %s\u0027 % ("},{"line_number":49,"context_line":"            stype, host[\u0027ip\u0027], host[\u0027port\u0027], method, full_path, resp.status)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_de34b595","line":46,"updated":"2017-08-25 23:04:56.000000000","message":"So we\u0027ll force it to unicode here...","commit_id":"87eaaebd67e7989426d4be2c184bf5b3f61bb45c"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"be284a1c8a1e52ca6064e778775eec9a19d175aa","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        host \u003d host if host is not None else node"},{"line_number":45,"context_line":"        if not isinstance(path, six.text_type):"},{"line_number":46,"context_line":"            path \u003d path.decode(\"utf-8\")"},{"line_number":47,"context_line":"        full_path \u003d quote(\u0027/%s/%s%s\u0027 % (node[\u0027device\u0027], part, path))"},{"line_number":48,"context_line":"        msg \u003d \u0027%s server %s:%s direct %s %r gave status %s\u0027 % ("},{"line_number":49,"context_line":"            stype, host[\u0027ip\u0027], host[\u0027port\u0027], method, full_path, resp.status)"},{"line_number":50,"context_line":"        headers \u003d HeaderKeyDict(resp.getheaders())"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_1e16bdf2","line":47,"range":{"start_line":47,"start_character":26,"end_line":47,"end_character":36},"updated":"2017-08-25 23:04:56.000000000","message":"...which means this will get hoisted to unicode ... only that was *already* happening because of the node dict that deserialized from JSON. Got it. And then swift.common.utils.quote forces it *back* to bytes before handing off to stdlib\u0027s quote(), which is good because otherwise we\u0027d hit things like\n\n\u003e\u003e\u003e urllib.quote(u\u0027\\u1234\u0027)\nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\n  File \"/usr/lib/python2.7/urllib.py\", line 1288, in quote\n    return \u0027\u0027.join(map(quoter, s))\nKeyError: u\u0027\\u1234\u0027\n\nShould we flag this string with a u\u0027\u0027 to make what\u0027s going on a little more explicit?","commit_id":"87eaaebd67e7989426d4be2c184bf5b3f61bb45c"}],"test/unit/common/test_direct_client.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"be284a1c8a1e52ca6064e778775eec9a19d175aa","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    def setUp(self):"},{"line_number":102,"context_line":"        self.node \u003d json.loads(json.dumps({  # json roundtrip to ring-like"},{"line_number":103,"context_line":"            \u0027ip\u0027: \u00271.2.3.4\u0027, \u0027port\u0027: \u00276200\u0027, \u0027device\u0027: \u0027sda\u0027,"},{"line_number":104,"context_line":"            \u0027replication_ip\u0027: \u00271.2.3.5\u0027, \u0027replication_port\u0027: \u00277000\u0027}))"},{"line_number":105,"context_line":"        self.part \u003d \u00270\u0027"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        self.account \u003d u\u0027\\u062a account\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_9eb86de5","line":104,"updated":"2017-08-25 23:04:56.000000000","message":"I\u0027m kinda tempted to say we just make these all unicode, but maybe the json dumps/loads is helpful to remember how we got here...","commit_id":"87eaaebd67e7989426d4be2c184bf5b3f61bb45c"}]}
