)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"620ebb369edc3e05fab50605e04d1746900826d9","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Cyril Roelandt \u003ccyril@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-02-03 12:50:54 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Python 3: fix glance.tests.functional.db.simple"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I2beee405c17e2c6cdd6198b9d089e806a9c56c70"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5a5ae5dd_c4382a40","line":7,"updated":"2016-02-04 09:46:42.000000000","message":"I guess you are adding functional tests for db simple to Py3 but commit message is slightly confusing because reviewers may assume that there is a bug or something else. Could you also add some description to the commit message?","commit_id":"02aea1395a87cc4478352b3bd090a64acdc1cedd"}],"glance/db/simple/api.py":[{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"510fb6a2f7fffc8a887850ef6ecdf8a0bff2ad4b","unresolved":false,"context_lines":[{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    for key, dir in reversed(list(zip(sort_key, sort_dir))):"},{"line_number":383,"context_line":"        reverse \u003d dir \u003d\u003d \u0027desc\u0027"},{"line_number":384,"context_line":"        images.sort(key\u003dlambda x: x[key] or \u0027\u0027, reverse\u003dreverse)"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    return images"},{"line_number":387,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a5ae5dd_2f51d7d8","line":384,"updated":"2016-02-04 09:56:33.000000000","message":"itemgetter is present in PY3.\nSo why do we need this change?","commit_id":"02aea1395a87cc4478352b3bd090a64acdc1cedd"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"1341a4dca5ae4eb728b094f96b80f61941a3fdcc","unresolved":false,"context_lines":[{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    for key, dir in reversed(list(zip(sort_key, sort_dir))):"},{"line_number":383,"context_line":"        reverse \u003d dir \u003d\u003d \u0027desc\u0027"},{"line_number":384,"context_line":"        images.sort(key\u003dlambda x: x[key] or \u0027\u0027, reverse\u003dreverse)"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    return images"},{"line_number":387,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a5ae5dd_d1678023","line":384,"in_reply_to":"5a5ae5dd_2f51d7d8","updated":"2016-02-04 13:48:40.000000000","message":"The change adds \"or \u0027\u0027\" to get a string if x[key] is false (if it is None I guess).","commit_id":"02aea1395a87cc4478352b3bd090a64acdc1cedd"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"e763af85a1783615377ffd7018a54cd3aaa631e2","unresolved":false,"context_lines":[{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    for key, dir in reversed(list(zip(sort_key, sort_dir))):"},{"line_number":383,"context_line":"        reverse \u003d dir \u003d\u003d \u0027desc\u0027"},{"line_number":384,"context_line":"        images.sort(key\u003dlambda x: x[key] or \u0027\u0027, reverse\u003dreverse)"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    return images"},{"line_number":387,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a5ae5dd_5a10854e","line":384,"in_reply_to":"5a5ae5dd_74f47af1","updated":"2016-02-04 14:23:33.000000000","message":"On Python 3, comparison between incompatible types now raises a TypeError:\n\n\u003e\u003e\u003e \u0027a\u0027 \u003e None\nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\nTypeError: unorderable types: str() \u003e NoneType()\n\nOn Python 2, the comparison compares the *name* of type (no joke).","commit_id":"02aea1395a87cc4478352b3bd090a64acdc1cedd"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"ecf59a2d53e4fa2a09531fea06184127bf6860f7","unresolved":false,"context_lines":[{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    for key, dir in reversed(list(zip(sort_key, sort_dir))):"},{"line_number":383,"context_line":"        reverse \u003d dir \u003d\u003d \u0027desc\u0027"},{"line_number":384,"context_line":"        images.sort(key\u003dlambda x: x[key] or \u0027\u0027, reverse\u003dreverse)"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    return images"},{"line_number":387,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a5ae5dd_74f47af1","line":384,"in_reply_to":"5a5ae5dd_d1678023","updated":"2016-02-04 13:56:49.000000000","message":"Thanks for response!\nI am rather wondering if it is related somehow to PY3 porting. Are sort or itemgetter not portable? (AFAIK, no)","commit_id":"02aea1395a87cc4478352b3bd090a64acdc1cedd"}]}
