)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"2ad147f569e1233290e8cc95ec72777aeb0d7090","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"six.reraise usages are left as is until it\u0027ll be moved to some"},{"line_number":13,"context_line":"base lib like oslo.utils to not re-implenent this method in"},{"line_number":14,"context_line":"Horizon."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This patch also removes Python2-specific base test case methods"},{"line_number":17,"context_line":"assertItemsEqual and assertNotRegexpMatches in flavor of new"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3fa7e38b_4c5f0c10","line":14,"updated":"2020-01-16 14:22:45.000000000","message":"oslo.utils is one good candidate to handle six.reraise, but IMHO we should investigate whether we can use \"raise ... from ...\" introduced in python3. I will check it.","commit_id":"d870b40583b2b735e43a061110380717929598ed"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"74cb3b209a1a92bb363a7f2d7d31692985b5a215","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"six.reraise usages are left as is until it\u0027ll be moved to some"},{"line_number":13,"context_line":"base lib like oslo.utils to not re-implenent this method in"},{"line_number":14,"context_line":"Horizon."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This patch also removes Python2-specific base test case methods"},{"line_number":17,"context_line":"assertItemsEqual and assertNotRegexpMatches in flavor of new"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3fa7e38b_67b8da77","line":14,"in_reply_to":"3fa7e38b_4c5f0c10","updated":"2020-01-16 22:41:24.000000000","message":"I proposed a patch to convert six.reraise into \"raise from\" in https://review.opendev.org/702998. Could you check it works?","commit_id":"d870b40583b2b735e43a061110380717929598ed"}],"openstack_dashboard/api/base.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"81598ca5ac9b51730de473e5a083a6b1489d3c94","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":17,"context_line":"#    under the License."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from collections.abc import Sequence"},{"line_number":20,"context_line":"import functools"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from django.conf import settings"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_84d3e602","line":19,"updated":"2020-01-11 13:13:48.000000000","message":"We would like to use module-level import.\n\n from collections import abc\n\nor\n\n from collections import abc as collections","commit_id":"4acc6fbf024f4c9f89334cf07fc8ea7c228afaec"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ae1b11b3bd55df094e09a883b8f0faeadc9663d5","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":17,"context_line":"#    under the License."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from collections.abc import Sequence"},{"line_number":20,"context_line":"import functools"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from django.conf import settings"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_6ee0d528","line":19,"in_reply_to":"3fa7e38b_84d3e602","updated":"2020-01-15 10:47:36.000000000","message":"Done","commit_id":"4acc6fbf024f4c9f89334cf07fc8ea7c228afaec"}],"openstack_dashboard/api/glance.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"81598ca5ac9b51730de473e5a083a6b1489d3c94","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import _thread as thread"},{"line_number":23,"context_line":"import collections"},{"line_number":24,"context_line":"from collections.abc import Iterable"},{"line_number":25,"context_line":"import itertools"},{"line_number":26,"context_line":"import json"},{"line_number":27,"context_line":"import logging"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_a4d062f6","line":24,"updated":"2020-01-11 13:13:48.000000000","message":"why don\u0027t you use a module level import?","commit_id":"4acc6fbf024f4c9f89334cf07fc8ea7c228afaec"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ae1b11b3bd55df094e09a883b8f0faeadc9663d5","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import _thread as thread"},{"line_number":23,"context_line":"import collections"},{"line_number":24,"context_line":"from collections.abc import Iterable"},{"line_number":25,"context_line":"import itertools"},{"line_number":26,"context_line":"import json"},{"line_number":27,"context_line":"import logging"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_0ecb61a4","line":24,"in_reply_to":"3fa7e38b_a4d062f6","updated":"2020-01-15 10:47:36.000000000","message":"Done","commit_id":"4acc6fbf024f4c9f89334cf07fc8ea7c228afaec"}],"openstack_dashboard/api/keystone.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"81598ca5ac9b51730de473e5a083a6b1489d3c94","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            return self.type"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def __repr__(self):"},{"line_number":96,"context_line":"        return \"\u003cService: %s\u003e\" % str(self)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"def _get_endpoint_url(request, endpoint_type, catalog\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_44ff2e69","line":96,"range":{"start_line":96,"start_character":33,"end_line":96,"end_character":37},"updated":"2020-01-11 13:13:48.000000000","message":"no str() is needed here.","commit_id":"4acc6fbf024f4c9f89334cf07fc8ea7c228afaec"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ae1b11b3bd55df094e09a883b8f0faeadc9663d5","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            return self.type"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def __repr__(self):"},{"line_number":96,"context_line":"        return \"\u003cService: %s\u003e\" % str(self)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"def _get_endpoint_url(request, endpoint_type, catalog\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_2e317dbc","line":96,"range":{"start_line":96,"start_character":33,"end_line":96,"end_character":37},"in_reply_to":"3fa7e38b_44ff2e69","updated":"2020-01-15 10:47:36.000000000","message":"Done","commit_id":"4acc6fbf024f4c9f89334cf07fc8ea7c228afaec"}],"openstack_dashboard/dashboards/project/images/images/tests.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"81598ca5ac9b51730de473e5a083a6b1489d3c94","unresolved":false,"context_lines":[{"line_number":266,"context_line":"        self.assertEqual(res.context[\u0027image\u0027].name, image.name)"},{"line_number":267,"context_line":"        self.assertEqual(res.context[\u0027image\u0027].protected, image.protected)"},{"line_number":268,"context_line":"        mock_image_get.assert_called_once_with(test.IsHttpRequest(),"},{"line_number":269,"context_line":"                                               six.text_type(image.id))"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def test_image_detail_get_v2(self):"},{"line_number":272,"context_line":"        image \u003d self.imagesV2.first()"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_04f93681","side":"PARENT","line":269,"range":{"start_line":269,"start_character":47,"end_line":269,"end_character":60},"updated":"2020-01-11 13:13:48.000000000","message":"Yeah, this is the one I thought we can drop. image.id is a string, so there is no need for a string conversion.","commit_id":"3a9eff62a140dceca6f816244960800874925fb2"}],"openstack_dashboard/dashboards/project/security_groups/forms.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"81598ca5ac9b51730de473e5a083a6b1489d3c94","unresolved":false,"context_lines":[{"line_number":484,"context_line":"                **params)"},{"line_number":485,"context_line":"            messages.success(request,"},{"line_number":486,"context_line":"                             _(\u0027Successfully added rule: %s\u0027)"},{"line_number":487,"context_line":"                             % rule)"},{"line_number":488,"context_line":"            return rule"},{"line_number":489,"context_line":"        except exceptions.Conflict as error:"},{"line_number":490,"context_line":"            exceptions.handle(request, error, redirect\u003dredirect)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_44240e1b","line":487,"updated":"2020-01-11 13:13:48.000000000","message":"This fits into one line.","commit_id":"4acc6fbf024f4c9f89334cf07fc8ea7c228afaec"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ae1b11b3bd55df094e09a883b8f0faeadc9663d5","unresolved":false,"context_lines":[{"line_number":484,"context_line":"                **params)"},{"line_number":485,"context_line":"            messages.success(request,"},{"line_number":486,"context_line":"                             _(\u0027Successfully added rule: %s\u0027)"},{"line_number":487,"context_line":"                             % rule)"},{"line_number":488,"context_line":"            return rule"},{"line_number":489,"context_line":"        except exceptions.Conflict as error:"},{"line_number":490,"context_line":"            exceptions.handle(request, error, redirect\u003dredirect)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_4e5f19e4","line":487,"in_reply_to":"3fa7e38b_44240e1b","updated":"2020-01-15 10:47:36.000000000","message":"Done","commit_id":"4acc6fbf024f4c9f89334cf07fc8ea7c228afaec"}],"openstack_dashboard/dashboards/project/volumes/tests.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"81598ca5ac9b51730de473e5a083a6b1489d3c94","unresolved":false,"context_lines":[{"line_number":1354,"context_line":"        self.assertEqual(set([\u0027ajax-modal\u0027, \u0027ajax-update\u0027, \u0027btn-create\u0027]),"},{"line_number":1355,"context_line":"                         set(create_action.classes))"},{"line_number":1356,"context_line":"        self.assertEqual(\u0027Create Volume\u0027,"},{"line_number":1357,"context_line":"                         create_action.verbose_name)"},{"line_number":1358,"context_line":"        self.assertEqual(\u0027horizon:project:volumes:create\u0027,"},{"line_number":1359,"context_line":"                         create_action.url)"},{"line_number":1360,"context_line":"        self.assertEqual(((\u0027volume\u0027, \u0027volume:create\u0027),),"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_042e16f9","line":1357,"updated":"2020-01-11 13:13:48.000000000","message":"This fits into one line.","commit_id":"4acc6fbf024f4c9f89334cf07fc8ea7c228afaec"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ae1b11b3bd55df094e09a883b8f0faeadc9663d5","unresolved":false,"context_lines":[{"line_number":1354,"context_line":"        self.assertEqual(set([\u0027ajax-modal\u0027, \u0027ajax-update\u0027, \u0027btn-create\u0027]),"},{"line_number":1355,"context_line":"                         set(create_action.classes))"},{"line_number":1356,"context_line":"        self.assertEqual(\u0027Create Volume\u0027,"},{"line_number":1357,"context_line":"                         create_action.verbose_name)"},{"line_number":1358,"context_line":"        self.assertEqual(\u0027horizon:project:volumes:create\u0027,"},{"line_number":1359,"context_line":"                         create_action.url)"},{"line_number":1360,"context_line":"        self.assertEqual(((\u0027volume\u0027, \u0027volume:create\u0027),),"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_ce6a2981","line":1357,"in_reply_to":"3fa7e38b_042e16f9","updated":"2020-01-15 10:47:36.000000000","message":"Done","commit_id":"4acc6fbf024f4c9f89334cf07fc8ea7c228afaec"}]}
