)]}'
{"openstackclient/common/extension.py":[{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"1d53d5d94e4c8f07a2c5f95aaf2785a87c347791","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        client \u003d self.app.client_manager.network"},{"line_number":157,"context_line":"        ext \u003d str(parsed_args.extension)"},{"line_number":158,"context_line":"        obj \u003d client.find_extension(ext)"},{"line_number":159,"context_line":"        dict_tuples \u003d (utils.get_item_properties("},{"line_number":160,"context_line":"                       obj,"},{"line_number":161,"context_line":"                       long_columns,"},{"line_number":162,"context_line":"                       formatters\u003d{},)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_a39ec0b5","line":159,"range":{"start_line":159,"start_character":29,"end_line":159,"end_character":48},"updated":"2017-03-25 10:16:53.000000000","message":"We show all the attributes of object in all other show commands by using\n\n    return zip(*sorted(six.iteritems(data)))\n\nBut \"extension show\" use utils.get_item_properties() method to get the part of columns and only output these. If the extension add some new attributes, it can\u0027t be shown automatically. And I hope we should keep the consistent with other show commands.","commit_id":"2ffe9cd05bc76f49b356d07f34ecb62e6fd3a8e0"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"8b43ea2b0e51122201949d23b7839f5713b34299","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        client \u003d self.app.client_manager.network"},{"line_number":157,"context_line":"        ext \u003d str(parsed_args.extension)"},{"line_number":158,"context_line":"        obj \u003d client.find_extension(ext)"},{"line_number":159,"context_line":"        dict_tuples \u003d (utils.get_item_properties("},{"line_number":160,"context_line":"                       obj,"},{"line_number":161,"context_line":"                       long_columns,"},{"line_number":162,"context_line":"                       formatters\u003d{},)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_8dd7c64b","line":159,"range":{"start_line":159,"start_character":29,"end_line":159,"end_character":48},"in_reply_to":"ffe62b97_a39ec0b5","updated":"2017-03-29 17:49:19.000000000","message":"It is not the extension that adds new attributes. It is determined by the network API.","commit_id":"2ffe9cd05bc76f49b356d07f34ecb62e6fd3a8e0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ae319d339149365133ac509943505e18c644eef5","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            try:"},{"line_number":110,"context_line":"                data +\u003d network_client.extensions()"},{"line_number":111,"context_line":"            except Exception:"},{"line_number":112,"context_line":"                message \u003d _(\"Extensions list not supported by Network API\")"},{"line_number":113,"context_line":"                LOG.warning(message)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        extension_tuples \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_baddc115","line":112,"range":{"start_line":112,"start_character":29,"end_line":112,"end_character":73},"updated":"2017-05-05 15:53:25.000000000","message":"The message is confusing. Network API supports to list extensions from long ago. An exception can be raised if some error happens during talking to the networking API. So I think some better wording should be explored.","commit_id":"997df8b65fea665793395c2d20a7c7254347cb4d"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"ff2031d7c1683cf140afccec1a6c9b8d169598e0","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            try:"},{"line_number":110,"context_line":"                data +\u003d network_client.extensions()"},{"line_number":111,"context_line":"            except Exception:"},{"line_number":112,"context_line":"                message \u003d _(\"Extensions list not supported by Network API\")"},{"line_number":113,"context_line":"                LOG.warning(message)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        extension_tuples \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_fc456c16","line":112,"range":{"start_line":112,"start_character":29,"end_line":112,"end_character":73},"in_reply_to":"3f044301_baddc115","updated":"2017-05-08 07:19:55.000000000","message":"It\u0027s difficult to cover all the situations with a word, in some cases \"supported\" is good, \"explored\" is easier to make confusion.","commit_id":"997df8b65fea665793395c2d20a7c7254347cb4d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"99e1ba0d63e4bc2544fc23d66a6b8e25291f3124","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            try:"},{"line_number":110,"context_line":"                data +\u003d network_client.extensions()"},{"line_number":111,"context_line":"            except Exception:"},{"line_number":112,"context_line":"                message \u003d _(\"Extensions list not supported by Network API\")"},{"line_number":113,"context_line":"                LOG.warning(message)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        extension_tuples \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"1f013ff3_eec4e242","line":112,"range":{"start_line":112,"start_character":29,"end_line":112,"end_character":73},"in_reply_to":"3f044301_fc456c16","updated":"2017-05-14 16:20:42.000000000","message":"At least I can say that \u0027supported\u0027 is completely wrong. \u0027extension list\u0027 is always supported as long as you use the networking API v2.0. Do you say \u0027supported\u0027 is the right word when some API error happens?\n\nMy suggestion is:\n\n  Failed to retrieve extension list from the Networking API\n\nor\n\n  Could not retrieve extension list from the Networking API","commit_id":"997df8b65fea665793395c2d20a7c7254347cb4d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ae319d339149365133ac509943505e18c644eef5","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        ext \u003d str(parsed_args.extension)"},{"line_number":142,"context_line":"        obj \u003d client.find_extension(ext).to_dict()"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        return zip(*sorted(six.iteritems(obj)))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_1accb55f","line":144,"range":{"start_line":144,"start_character":27,"end_line":144,"end_character":40},"updated":"2017-05-05 15:53:25.000000000","message":"Consider not to use six.iteritems. There is no need for six.iteritems in most cases. obj.items() is enough.","commit_id":"997df8b65fea665793395c2d20a7c7254347cb4d"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"ff2031d7c1683cf140afccec1a6c9b8d169598e0","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        ext \u003d str(parsed_args.extension)"},{"line_number":142,"context_line":"        obj \u003d client.find_extension(ext).to_dict()"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        return zip(*sorted(six.iteritems(obj)))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_83084bd9","line":144,"range":{"start_line":144,"start_character":27,"end_line":144,"end_character":40},"in_reply_to":"3f044301_1accb55f","updated":"2017-05-08 07:19:55.000000000","message":"Yep, openstack support py27 and py35 now, and the result is wrapped in sorted(), so the six.iteritems is not necessary, but I think we should do it in split patch for all show commands, and this patch only do rework for \"extension show\"","commit_id":"997df8b65fea665793395c2d20a7c7254347cb4d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"99e1ba0d63e4bc2544fc23d66a6b8e25291f3124","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        ext \u003d str(parsed_args.extension)"},{"line_number":142,"context_line":"        obj \u003d client.find_extension(ext).to_dict()"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        return zip(*sorted(six.iteritems(obj)))"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f013ff3_eed98222","line":144,"range":{"start_line":144,"start_character":27,"end_line":144,"end_character":40},"in_reply_to":"3f044301_83084bd9","updated":"2017-05-14 16:20:42.000000000","message":"There is no need to introduce more six.iteritems() for a new code. This is my point. This is different from cleaning up the existing six.iteritems.","commit_id":"997df8b65fea665793395c2d20a7c7254347cb4d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"79abd6395c6d6c5073a87d561a2fef97377c7dcf","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            try:"},{"line_number":110,"context_line":"                data +\u003d network_client.extensions()"},{"line_number":111,"context_line":"            except Exception:"},{"line_number":112,"context_line":"                message \u003d _(\"Extensions list not supported by Network API\")"},{"line_number":113,"context_line":"                LOG.warning(message)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        extension_tuples \u003d ("}],"source_content_type":"text/x-python","patch_set":4,"id":"1f013ff3_8e0afe87","line":112,"range":{"start_line":112,"start_character":49,"end_line":112,"end_character":58},"updated":"2017-05-14 21:22:44.000000000","message":"As I replied in patch set 3, \u0027supported\u0027 is completely confusing as all neutron releases support \u0027extension list\u0027. For more detail, I replied in patch set 3. At least I am confused as a user.","commit_id":"d1cc228d176e50f2934d44b62c8a78f1456ea7e9"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"da0aa5a100ced74ea528a985049d58e9233a14e1","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            try:"},{"line_number":110,"context_line":"                data +\u003d network_client.extensions()"},{"line_number":111,"context_line":"            except Exception:"},{"line_number":112,"context_line":"                message \u003d _(\"Extensions list not supported by Network API\")"},{"line_number":113,"context_line":"                LOG.warning(message)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        extension_tuples \u003d ("}],"source_content_type":"text/x-python","patch_set":4,"id":"1f013ff3_14b598cd","line":112,"range":{"start_line":112,"start_character":49,"end_line":112,"end_character":58},"in_reply_to":"1f013ff3_8e0afe87","updated":"2017-05-17 02:39:19.000000000","message":"\"extensions list\" is supported by identity API v2, but not v3, so \"supported\" is ok, for special networking API case, if extension list always stand there, I think it\u0027s ok to change.","commit_id":"d1cc228d176e50f2934d44b62c8a78f1456ea7e9"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"79abd6395c6d6c5073a87d561a2fef97377c7dcf","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        ext \u003d str(parsed_args.extension)"},{"line_number":142,"context_line":"        obj \u003d client.find_extension(ext, ignore_missing\u003dFalse).to_dict()"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        return zip(*sorted(six.iteritems(obj)))"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f013ff3_6effb267","line":144,"range":{"start_line":144,"start_character":27,"end_line":144,"end_character":45},"updated":"2017-05-14 21:22:44.000000000","message":"what I say is that there is no need to introduce a new six.iteritems which will be clean up later. We can start not to use six.iteritems in a new code and clean up existing ones later.","commit_id":"d1cc228d176e50f2934d44b62c8a78f1456ea7e9"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"da0aa5a100ced74ea528a985049d58e9233a14e1","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        ext \u003d str(parsed_args.extension)"},{"line_number":142,"context_line":"        obj \u003d client.find_extension(ext, ignore_missing\u003dFalse).to_dict()"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        return zip(*sorted(six.iteritems(obj)))"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f013ff3_94b3e84d","line":144,"range":{"start_line":144,"start_character":27,"end_line":144,"end_character":45},"in_reply_to":"1f013ff3_6effb267","updated":"2017-05-17 02:39:19.000000000","message":"Done","commit_id":"d1cc228d176e50f2934d44b62c8a78f1456ea7e9"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1b4caacbfaa661492dbdb306c8838949c8430a91","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from osc_lib.command import command"},{"line_number":21,"context_line":"from osc_lib import utils"},{"line_number":22,"context_line":"import six"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from openstackclient.i18n import _"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff0f0b1f_a0695e8c","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":10},"updated":"2017-05-17 12:09:20.000000000","message":"It is unnecessary. This causes pep8 failure.","commit_id":"f89de736af532889801fe72a3318b9fe70f56e92"}]}
