)]}'
{"swiftclient/utils.py":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"84bce78a2a60a33f78fd8c4d1950b2fd140c6089","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                   hmac_body.encode(),"},{"line_number":102,"context_line":"                   hashlib.sha1).hexdigest()"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    return (\u0027{path}?temp_url_sig\u003d\u0027"},{"line_number":105,"context_line":"            \u0027{sig}\u0026temp_url_expires\u003d{exp}\u0027.format("},{"line_number":106,"context_line":"                path\u003dpath,"},{"line_number":107,"context_line":"                sig\u003dsig,"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_3fecd28e","side":"PARENT","line":104,"updated":"2016-07-19 09:47:38.000000000","message":"Instead of importing unicode_literals, could we just return a unicode string here? Like\n\n return (u\u0027{path}?temp_url_sig\u003d\u0027\n         ^\n         |\n\nTests are still passing then locally for me. This might still affect clients that directly import/use the method, but then this fixes a bug, so that should be fine.","commit_id":"07c960d46fe8412d98799b1820d57810a9a8a3e7"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"84bce78a2a60a33f78fd8c4d1950b2fd140c6089","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":"\"\"\"Miscellaneous utility functions for use with Swift.\"\"\""},{"line_number":16,"context_line":"from __future__ import unicode_literals"},{"line_number":17,"context_line":"import hashlib"},{"line_number":18,"context_line":"import hmac"},{"line_number":19,"context_line":"import json"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_ffca3a19","line":16,"updated":"2016-07-19 09:47:38.000000000","message":"I agree with Alistair - this scares me. Even more after reading http://python-future.org/unicode_literals.html","commit_id":"bc66f1683436e877f3ee2d9e4fe88dcfd59d502c"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"5392f4800043e6dd2ee5af751f3e64ecfcbbc7c7","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        cluster. To set a key, run \u0027swift post -m"},{"line_number":74,"context_line":"        \"Temp-URL-Key: \u003csubstitute tempurl key here\u003e\"\u0027"},{"line_number":75,"context_line":"    :param method: A HTTP method, typically either GET or PUT, to allow"},{"line_number":76,"context_line":"        for this temporary URL."},{"line_number":77,"context_line":"    :raises: ValueError if seconds is not a positive integer"},{"line_number":78,"context_line":"    :raises: TypeError if seconds is not an integer"},{"line_number":79,"context_line":"    :return: the path portion of a temporary URL"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_ce1e1c0b","line":76,"updated":"2016-07-21 16:40:34.000000000","message":"nit: param absolute is missing","commit_id":"dca4ea5fd6e1a4eb15eeea9879913f64f2851446"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"5392f4800043e6dd2ee5af751f3e64ecfcbbc7c7","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        \"Temp-URL-Key: \u003csubstitute tempurl key here\u003e\"\u0027"},{"line_number":75,"context_line":"    :param method: A HTTP method, typically either GET or PUT, to allow"},{"line_number":76,"context_line":"        for this temporary URL."},{"line_number":77,"context_line":"    :raises: ValueError if seconds is not a positive integer"},{"line_number":78,"context_line":"    :raises: TypeError if seconds is not an integer"},{"line_number":79,"context_line":"    :return: the path portion of a temporary URL"},{"line_number":80,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_0eecb4f1","line":77,"updated":"2016-07-21 16:40:34.000000000","message":"ValueError is also raised if path is not utf-8","commit_id":"dca4ea5fd6e1a4eb15eeea9879913f64f2851446"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"5392f4800043e6dd2ee5af751f3e64ecfcbbc7c7","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    temp_url \u003d u\u0027{path}?temp_url_sig\u003d{sig}\u0026temp_url_expires\u003d{exp}\u0027.format("},{"line_number":114,"context_line":"        path\u003dpath_for_body, sig\u003dsig, exp\u003dexpiration)"},{"line_number":115,"context_line":"    # Have return type match path from caller"},{"line_number":116,"context_line":"    if isinstance(path, six.binary_type):"},{"line_number":117,"context_line":"        return temp_url.encode(\u0027utf-8\u0027)"},{"line_number":118,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_26639843","line":115,"updated":"2016-07-21 16:40:34.000000000","message":"this is still a change from behaviour on master - on master in py27 we can pass in unicode with ascii and we get back a str, now we get back unicode.\n\nIn py3 on master we cannot pass in bytes without the function blowing up, so the \u0027change\u0027 is moot.\n\n  py2.7:\n\n  in       out master    out patch\n  --       ----------    ---------    \n  bytes       bytes         bytes\n  unicode     bytes         unicode\n\n\n  py3.4:\n\n  in       out master    out patch\n  --       ----------    ---------\n  bytes       Exception     bytes\n  unicode     unicode       unicode","commit_id":"dca4ea5fd6e1a4eb15eeea9879913f64f2851446"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"39c1d9ea542c73c27d9232ae950985dbf2926594","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    temp_url \u003d u\u0027{path}?temp_url_sig\u003d{sig}\u0026temp_url_expires\u003d{exp}\u0027.format("},{"line_number":114,"context_line":"        path\u003dpath_for_body, sig\u003dsig, exp\u003dexpiration)"},{"line_number":115,"context_line":"    # Have return type match path from caller"},{"line_number":116,"context_line":"    if isinstance(path, six.binary_type):"},{"line_number":117,"context_line":"        return temp_url.encode(\u0027utf-8\u0027)"},{"line_number":118,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_f275ba31","line":115,"in_reply_to":"dada55a8_26639843","updated":"2016-07-21 17:36:30.000000000","message":"I claim that the unicode -\u003e bytes behavior was an unreported bug. If you look at various standard library functions (os.path.join, re.match, ...), when you pass in unicode, you should expect to get out unicode.","commit_id":"dca4ea5fd6e1a4eb15eeea9879913f64f2851446"}]}
