)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"8d559c3ea947d099fd67753adf75b3acdeb879fe","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Class KeyValueListAction will be used to parse arguments like this:"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"--routes destination\u003dxxx,nexthop\u003dxxx --route destination\u003dyyy,nexthop\u003dyyy"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The result is a list like this:"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"da6ed579_b11a3f6d","line":11,"updated":"2016-01-12 14:49:48.000000000","message":"This should be --route instead of --routes.","commit_id":"20fb798fe7cfcf2c8260ce92433e556e9e2d2c09"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"0a7670f1708312e5ccffb8552817bfe822ab2f09","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Class KeyValueListAction will be used to parse arguments like this:"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"--routes destination\u003dxxx,nexthop\u003dxxx --route destination\u003dyyy,nexthop\u003dyyy"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The result is a list like this:"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7a5de9d1_3a33b4f7","line":11,"in_reply_to":"da6ed579_b11a3f6d","updated":"2016-02-02 05:44:49.000000000","message":"Done","commit_id":"20fb798fe7cfcf2c8260ce92433e556e9e2d2c09"}],"openstackclient/common/parseractions.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"ce129abf3a75d37d99d9a05881dfefd51128f627","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            # Add value if an assignment else remove it"},{"line_number":54,"context_line":"            if \u0027\u003d\u0027 in kv:"},{"line_number":55,"context_line":"                tmpdict.update([kv.split(\u0027\u003d\u0027, 1)])"},{"line_number":56,"context_line":"            else:"},{"line_number":57,"context_line":"                return"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        # Append the dict to the dest list"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a7b0d38_69b79cf5","line":56,"range":{"start_line":56,"start_character":16,"end_line":56,"end_character":17},"updated":"2015-12-28 07:59:30.000000000","message":"Can we raise exception here?","commit_id":"17d7c223497be6d9934f2b03152721978446038d"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"42e7a01283c7f125e3352572d30d70d351ac6def","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            # Add value if an assignment else remove it"},{"line_number":54,"context_line":"            if \u0027\u003d\u0027 in kv:"},{"line_number":55,"context_line":"                tmpdict.update([kv.split(\u0027\u003d\u0027, 1)])"},{"line_number":56,"context_line":"            else:"},{"line_number":57,"context_line":"                return"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        # Append the dict to the dest list"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a7b0d38_0db5c32f","line":56,"range":{"start_line":56,"start_character":16,"end_line":56,"end_character":17},"in_reply_to":"1a7b0d38_69b79cf5","updated":"2015-12-28 08:29:39.000000000","message":"Well, maybe. But if we should, what exception do you think we should raise ?","commit_id":"17d7c223497be6d9934f2b03152721978446038d"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"ce129abf3a75d37d99d9a05881dfefd51128f627","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                return"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        # Append the dict to the dest list"},{"line_number":60,"context_line":"        getattr(namespace, self.dest, []).append(tmpdict)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"class RangeAction(argparse.Action):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a7b0d38_6929dc36","line":60,"range":{"start_line":60,"start_character":32,"end_line":60,"end_character":36},"updated":"2015-12-28 07:59:30.000000000","message":"we must make sure we get something instead of the [].\nSo the \n\ngetattr(namespace, self.dest).append(tmpdict) is enough.","commit_id":"17d7c223497be6d9934f2b03152721978446038d"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"42e7a01283c7f125e3352572d30d70d351ac6def","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                return"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        # Append the dict to the dest list"},{"line_number":60,"context_line":"        getattr(namespace, self.dest, []).append(tmpdict)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"class RangeAction(argparse.Action):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a7b0d38_ed8e3778","line":60,"range":{"start_line":60,"start_character":32,"end_line":60,"end_character":36},"in_reply_to":"1a7b0d38_6929dc36","updated":"2015-12-28 08:29:39.000000000","message":"Just in case, I think. If we can ensure self.dest is not None (by raising exception above), then it is OK.","commit_id":"17d7c223497be6d9934f2b03152721978446038d"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"8d559c3ea947d099fd67753adf75b3acdeb879fe","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        tmpdict \u003d {}"},{"line_number":52,"context_line":"        for kv in values.split(\u0027,\u0027):"},{"line_number":53,"context_line":"            # Add value if an assignment else remove it"},{"line_number":54,"context_line":"            if \u0027\u003d\u0027 in kv:"},{"line_number":55,"context_line":"                tmpdict.update([kv.split(\u0027\u003d\u0027, 1)])"},{"line_number":56,"context_line":"            else:"},{"line_number":57,"context_line":"                msg \u003d (\"%s expected multiple key\u003dvalue pairs separated by \""}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_51bae3e2","line":54,"updated":"2016-01-12 14:49:48.000000000","message":"How about using kv.partition(\u0027\u003d\u0027) instead?","commit_id":"20fb798fe7cfcf2c8260ce92433e556e9e2d2c09"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"0a7670f1708312e5ccffb8552817bfe822ab2f09","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        tmpdict \u003d {}"},{"line_number":52,"context_line":"        for kv in values.split(\u0027,\u0027):"},{"line_number":53,"context_line":"            # Add value if an assignment else remove it"},{"line_number":54,"context_line":"            if \u0027\u003d\u0027 in kv:"},{"line_number":55,"context_line":"                tmpdict.update([kv.split(\u0027\u003d\u0027, 1)])"},{"line_number":56,"context_line":"            else:"},{"line_number":57,"context_line":"                msg \u003d (\"%s expected multiple key\u003dvalue pairs separated by \""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a5de9d1_7a3dacc2","line":54,"in_reply_to":"da6ed579_51bae3e2","updated":"2016-02-02 05:44:49.000000000","message":"I prefer \"in\" here. partition() will return a tuple no matter if the substring is found. So it is not convenience to check True or False.","commit_id":"20fb798fe7cfcf2c8260ce92433e556e9e2d2c09"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"8d559c3ea947d099fd67753adf75b3acdeb879fe","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            if \u0027\u003d\u0027 in kv:"},{"line_number":55,"context_line":"                tmpdict.update([kv.split(\u0027\u003d\u0027, 1)])"},{"line_number":56,"context_line":"            else:"},{"line_number":57,"context_line":"                msg \u003d (\"%s expected multiple key\u003dvalue pairs separated by \""},{"line_number":58,"context_line":"                       \"comma\" % (str(option_string)))"},{"line_number":59,"context_line":"                raise argparse.ArgumentTypeError(self, msg)"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_31872f11","line":57,"updated":"2016-01-12 14:49:48.000000000","message":"I think that a single key\u003dvalue pair will satisfy this code.  Are multiple really necessary?","commit_id":"20fb798fe7cfcf2c8260ce92433e556e9e2d2c09"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"0a7670f1708312e5ccffb8552817bfe822ab2f09","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            if \u0027\u003d\u0027 in kv:"},{"line_number":55,"context_line":"                tmpdict.update([kv.split(\u0027\u003d\u0027, 1)])"},{"line_number":56,"context_line":"            else:"},{"line_number":57,"context_line":"                msg \u003d (\"%s expected multiple key\u003dvalue pairs separated by \""},{"line_number":58,"context_line":"                       \"comma\" % (str(option_string)))"},{"line_number":59,"context_line":"                raise argparse.ArgumentTypeError(self, msg)"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a5de9d1_f7bc55dd","line":57,"in_reply_to":"da6ed579_31872f11","updated":"2016-02-02 05:44:49.000000000","message":"There are two pairs, right ?  destination and nexthop","commit_id":"20fb798fe7cfcf2c8260ce92433e556e9e2d2c09"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"8d559c3ea947d099fd67753adf75b3acdeb879fe","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                tmpdict.update([kv.split(\u0027\u003d\u0027, 1)])"},{"line_number":56,"context_line":"            else:"},{"line_number":57,"context_line":"                msg \u003d (\"%s expected multiple key\u003dvalue pairs separated by \""},{"line_number":58,"context_line":"                       \"comma\" % (str(option_string)))"},{"line_number":59,"context_line":"                raise argparse.ArgumentTypeError(self, msg)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        # Append the dict to the dest list"}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_91c4db40","line":58,"updated":"2016-01-12 14:49:48.000000000","message":"It would be nice to include the key\u003dvalue pair that caused the error.","commit_id":"20fb798fe7cfcf2c8260ce92433e556e9e2d2c09"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"0a7670f1708312e5ccffb8552817bfe822ab2f09","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                tmpdict.update([kv.split(\u0027\u003d\u0027, 1)])"},{"line_number":56,"context_line":"            else:"},{"line_number":57,"context_line":"                msg \u003d (\"%s expected multiple key\u003dvalue pairs separated by \""},{"line_number":58,"context_line":"                       \"comma\" % (str(option_string)))"},{"line_number":59,"context_line":"                raise argparse.ArgumentTypeError(self, msg)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        # Append the dict to the dest list"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a5de9d1_5770c93f","line":58,"in_reply_to":"da6ed579_91c4db40","updated":"2016-02-02 05:44:49.000000000","message":"Done","commit_id":"20fb798fe7cfcf2c8260ce92433e556e9e2d2c09"}]}
