)]}'
{"swift/common/bufferedhttp.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"e487998c9bbc908d22ef6842403dd967aba26d7d","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            path \u003d path.encode(\"utf-8\")"},{"line_number":156,"context_line":"        except UnicodeError as e:"},{"line_number":157,"context_line":"            logging.exception(_(\u0027Error encoding to UTF-8: %s\u0027), str(e))"},{"line_number":158,"context_line":"    path \u003d quote(\u0027/\u0027 + str(device) + \u0027/\u0027 + str(partition) + path)"},{"line_number":159,"context_line":"    return http_connect_raw("},{"line_number":160,"context_line":"        ipaddr, port, method, path, headers, query_string, ssl)"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_c1b5aa7e","line":158,"updated":"2015-03-10 01:00:37.000000000","message":"str(device) will fail if someone has a unicode character in device.. in the documentation we say device is a string and swift-ring-builder allows us to define a unicode string as the device.. in which case, wont this fail on clusters out there that use a unicode devices (if there are any)? \n\nIn which case do we need to have an \u0027isinstance(device, unicode); device.encode(\u0027utf-8\u0027)\u0027 as well? Unless I\u0027m missing somewhere in the code where we already sanitise the device string.. which might very well be possible.","commit_id":"e8d86aad4f77eff5f32377122c2ab1e0e9277884"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"d192a19f1744591cd2ce2e6384cde1e6906a801c","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            path \u003d path.encode(\"utf-8\")"},{"line_number":156,"context_line":"        except UnicodeError as e:"},{"line_number":157,"context_line":"            logging.exception(_(\u0027Error encoding to UTF-8: %s\u0027), str(e))"},{"line_number":158,"context_line":"    path \u003d quote(\u0027/\u0027 + str(device) + \u0027/\u0027 + str(partition) + path)"},{"line_number":159,"context_line":"    return http_connect_raw("},{"line_number":160,"context_line":"        ipaddr, port, method, path, headers, query_string, ssl)"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"dac4157f_f903ca40","line":158,"in_reply_to":"9a80dd14_2ff66d8f","updated":"2015-04-21 13:23:32.000000000","message":"Unicode device name addressed in next patchset although it seems that would blow up on master anyway in the call to quote().","commit_id":"e8d86aad4f77eff5f32377122c2ab1e0e9277884"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"77d790b783cddc7bf218076f4f69185fbda331e3","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            path \u003d path.encode(\"utf-8\")"},{"line_number":156,"context_line":"        except UnicodeError as e:"},{"line_number":157,"context_line":"            logging.exception(_(\u0027Error encoding to UTF-8: %s\u0027), str(e))"},{"line_number":158,"context_line":"    path \u003d quote(\u0027/\u0027 + str(device) + \u0027/\u0027 + str(partition) + path)"},{"line_number":159,"context_line":"    return http_connect_raw("},{"line_number":160,"context_line":"        ipaddr, port, method, path, headers, query_string, ssl)"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_2ff66d8f","line":158,"in_reply_to":"9a80dd14_c1b5aa7e","updated":"2015-03-10 01:28:14.000000000","message":"I think if we just move things around so we munge the final path before doing the Unicode check it would all work out.","commit_id":"e8d86aad4f77eff5f32377122c2ab1e0e9277884"}],"swift/common/middleware/tempauth.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b53b821915085117193dfa1c5d5631404892b390","unresolved":false,"context_lines":[{"line_number":455,"context_line":"            if not isinstance(result[key], list):"},{"line_number":456,"context_line":"                return \u0027Value for key %r must be a list\u0027 % key"},{"line_number":457,"context_line":"            for grantee in result[key]:"},{"line_number":458,"context_line":"                if not isinstance(grantee, str):"},{"line_number":459,"context_line":"                    return \u0027Elements of %r list must be strings\u0027 % key"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"        # Everything looks fine, no errors found"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_49f4685a","side":"PARENT","line":458,"updated":"2015-02-26 17:47:43.000000000","message":"Maybe just  change the isinstance check to basestring (or six.string_types)?","commit_id":"a14cf43c47f3c014f5d65735a82c28350112abfe"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"41d5ea4692af1fce48bd7c3fc63045d0dd8cf812","unresolved":false,"context_lines":[{"line_number":455,"context_line":"            if not isinstance(result[key], list):"},{"line_number":456,"context_line":"                return \u0027Value for key %r must be a list\u0027 % key"},{"line_number":457,"context_line":"            for grantee in result[key]:"},{"line_number":458,"context_line":"                if not isinstance(grantee, str):"},{"line_number":459,"context_line":"                    return \u0027Elements of %r list must be strings\u0027 % key"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"        # Everything looks fine, no errors found"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_ab64ce49","side":"PARENT","line":458,"in_reply_to":"ba7be1f8_49f4685a","updated":"2015-02-27 14:16:34.000000000","message":"Done","commit_id":"a14cf43c47f3c014f5d65735a82c28350112abfe"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"5d9d8ee0cc6a52c32482eb320c1cea3d160c0972","unresolved":false,"context_lines":[{"line_number":455,"context_line":"            if not isinstance(result[key], list):"},{"line_number":456,"context_line":"                return \u0027Value for key %r must be a list\u0027 % key"},{"line_number":457,"context_line":"            for grantee in result[key]:"},{"line_number":458,"context_line":"                if not isinstance(grantee, str):"},{"line_number":459,"context_line":"                    return \u0027Elements of %r list must be strings\u0027 % key"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"        # Everything looks fine, no errors found"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_7d71dbdf","side":"PARENT","line":458,"in_reply_to":"ba7be1f8_49f4685a","updated":"2015-02-26 22:31:26.000000000","message":"I\u0027m totally with Clay here. Maybe enough to put -1 for now.","commit_id":"a14cf43c47f3c014f5d65735a82c28350112abfe"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"4cc13377475d8e93ad3bd783036e97e3e5f900d2","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from hashlib import sha1"},{"line_number":23,"context_line":"import hmac"},{"line_number":24,"context_line":"import base64"},{"line_number":25,"context_line":"import six"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from eventlet import Timeout"},{"line_number":28,"context_line":"from swift.common.swob import Response, Request"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_56eccec7","line":25,"updated":"2015-02-27 16:36:33.000000000","message":"oh man, sorry but this is the only file in swift that imports six","commit_id":"8e13d89084bc896101f05b78238080da5e0906e5"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"5d8e7e7103c55decf0301980cfabaea46d539949","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from hashlib import sha1"},{"line_number":23,"context_line":"import hmac"},{"line_number":24,"context_line":"import base64"},{"line_number":25,"context_line":"import six"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from eventlet import Timeout"},{"line_number":28,"context_line":"from swift.common.swob import Response, Request"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_ea94f5e9","line":25,"in_reply_to":"ba7be1f8_56eccec7","updated":"2015-02-27 17:50:44.000000000","message":"Done","commit_id":"8e13d89084bc896101f05b78238080da5e0906e5"}]}
