)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"f0d4a580bec197b435fe5d6964d4284cbc8e3da5","unresolved":false,"context_lines":[{"line_number":10,"context_line":"* Convert dict keys into list to be able to retrieve the first element"},{"line_number":11,"context_line":"* Use integer division for integers"},{"line_number":12,"context_line":"* Support of type long in XML serialization/deserialization"},{"line_number":13,"context_line":"* Careful encoding strings into UTF-8"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ia79c831310775bf1c3dbec06010f8949c3a73887"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"baada198_f6c70763","line":13,"updated":"2014-08-11 09:02:03.000000000","message":"Encoding is extremely tricky, especially when going from Python 2 to Python 3.\n\nI\u0027d rather keep the \"obvious\" changes (six renames, lists vs maps) in one patch, and the more complex ones in another: this makes things easier to revert if it is ever needed.","commit_id":"bb6d9ca93b5fc6566a79abef20c64465f85bd39c"}],"neutronclient/client.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"36be5bf59ab2b6ed4eadc99fcbd77cfaaf52946d","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        Either a Webob.Response (used in testing) or requests.Response"},{"line_number":53,"context_line":"        is returned."},{"line_number":54,"context_line":"        \"\"\""},{"line_number":55,"context_line":"        if hasattr(response, \u0027status_code\u0027):"},{"line_number":56,"context_line":"            return response.status_code"},{"line_number":57,"context_line":"        else:"},{"line_number":58,"context_line":"            return response.status_int"}],"source_content_type":"text/x-python","patch_set":3,"id":"1abeadc6_06faccbc","line":55,"updated":"2014-08-27 17:25:44.000000000","message":"I am not sure why it is a part of this patch. Could you explain more?","commit_id":"fec6793d705e1b8946333c21e209198bb0c0f137"},{"author":{"_account_id":5950,"name":"Ilya Shakhat","email":"shakhat@gmail.com","username":"shakhat"},"change_message_id":"fad2fcb61d67d2a362e7a0b2c794af73a6493bc0","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        Either a Webob.Response (used in testing) or requests.Response"},{"line_number":53,"context_line":"        is returned."},{"line_number":54,"context_line":"        \"\"\""},{"line_number":55,"context_line":"        if hasattr(response, \u0027status_code\u0027):"},{"line_number":56,"context_line":"            return response.status_code"},{"line_number":57,"context_line":"        else:"},{"line_number":58,"context_line":"            return response.status_int"}],"source_content_type":"text/x-python","patch_set":3,"id":"1abeadc6_5ea2b24b","line":55,"in_reply_to":"1abeadc6_06faccbc","updated":"2014-08-28 08:42:37.000000000","message":"Under Py3 this line fails with \"mox3.mox.UnknownMethodCallError: Method called is not a member of the object: status_int\". \nAccording to the comment above this whole check is needed to choose between production (requests.Response.status_code) and testing (Webob.Response.status_int). However we do not use Webob so can always pick .status_code. I will make this change in a separate patch","commit_id":"fec6793d705e1b8946333c21e209198bb0c0f137"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a1beafb618eed4e5a11f571380a04b0de3d2e399","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        Either a Webob.Response (used in testing) or requests.Response"},{"line_number":53,"context_line":"        is returned."},{"line_number":54,"context_line":"        \"\"\""},{"line_number":55,"context_line":"        if hasattr(response, \u0027status_code\u0027):"},{"line_number":56,"context_line":"            return response.status_code"},{"line_number":57,"context_line":"        else:"},{"line_number":58,"context_line":"            return response.status_int"}],"source_content_type":"text/x-python","patch_set":3,"id":"1abeadc6_21006e01","line":55,"in_reply_to":"1abeadc6_5ea2b24b","updated":"2014-08-28 14:44:56.000000000","message":"I see. Thanks for the clarification. Swapping them is fair enough to me.  Fixing it in a separate patch also sounds reasonable so that reviewers can know why clearly.","commit_id":"fec6793d705e1b8946333c21e209198bb0c0f137"}],"neutronclient/common/serializer.py":[{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"f0d4a580bec197b435fe5d6964d4284cbc8e3da5","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                result.set("},{"line_number":186,"context_line":"                    constants.TYPE_ATTR,"},{"line_number":187,"context_line":"                    constants.TYPE_INT)"},{"line_number":188,"context_line":"            elif hasattr(types, \u0027LongType\u0027) and isinstance(data, long):"},{"line_number":189,"context_line":"                result.set("},{"line_number":190,"context_line":"                    constants.TYPE_ATTR,"},{"line_number":191,"context_line":"                    constants.TYPE_LONG)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_1689db6f","line":188,"updated":"2014-08-11 09:02:03.000000000","message":"So, what happens in Python 3 ? This condition evaluates to False, if I\u0027m not mistaken, and we never call result.set(). I\u0027d be in favor of using \"long \u003d int\" in Python 3 and keep the test as is.","commit_id":"bb6d9ca93b5fc6566a79abef20c64465f85bd39c"}]}
