)]}'
{"neutron/plugins/nicira/NvpApiClient.py":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"237a2b96bae93ac60da7def781a69fd29abbea76","unresolved":false,"context_lines":[{"line_number":216,"context_line":"    \"\"\""},{"line_number":217,"context_line":"    message \u003d _(\"An unknown exception occurred.\")"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def __init__(self, **kwargs):"},{"line_number":220,"context_line":"        if \u0027message\u0027 in kwargs:"},{"line_number":221,"context_line":"            self.message \u003d str(kwargs[\u0027message\u0027])"},{"line_number":222,"context_line":"            del kwargs[\u0027message\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FpK0%3D","line":219,"updated":"2013-09-23 14:28:31.000000000","message":"since nvpApiException inherits from class Exception, should it call super()?","commit_id":"882475a85f12bbb6fd874dea2e124943ed9695b8"},{"author":{"_account_id":6522,"name":"Sean McCully","email":"sean_mccully@yahoo.com","username":"sean-mccully"},"change_message_id":"cc8ee0d25845611d41056a15b6901b3faf4c4a21","unresolved":false,"context_lines":[{"line_number":216,"context_line":"    \"\"\""},{"line_number":217,"context_line":"    message \u003d _(\"An unknown exception occurred.\")"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def __init__(self, **kwargs):"},{"line_number":220,"context_line":"        if \u0027message\u0027 in kwargs:"},{"line_number":221,"context_line":"            self.message \u003d str(kwargs[\u0027message\u0027])"},{"line_number":222,"context_line":"            del kwargs[\u0027message\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FnI0%3D","line":219,"in_reply_to":"AAAAS3%2F%2FpK0%3D","updated":"2013-09-24 00:40:59.000000000","message":"I am not sure what your expected/desired behaviour from Exception.__init__\n would be http://docs.python.org/2/tutorial/errors.html","commit_id":"882475a85f12bbb6fd874dea2e124943ed9695b8"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"9872ec0ee4289048676f80cb07de2cee1e36c39e","unresolved":false,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def __init__(self, **kwargs):"},{"line_number":220,"context_line":"        if \u0027message\u0027 in kwargs:"},{"line_number":221,"context_line":"            self.message \u003d str(kwargs[\u0027message\u0027])"},{"line_number":222,"context_line":"            del kwargs[\u0027message\u0027]"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FpEI%3D","line":221,"updated":"2013-09-23 14:51:30.000000000","message":"I think the right fix for dealing with \u0027message\u0027 is the one proposed here:\n\nhttps://review.openstack.org/#/c/42395\n\nToo bad the review has made in yet.","commit_id":"882475a85f12bbb6fd874dea2e124943ed9695b8"},{"author":{"_account_id":6522,"name":"Sean McCully","email":"sean_mccully@yahoo.com","username":"sean-mccully"},"change_message_id":"cc8ee0d25845611d41056a15b6901b3faf4c4a21","unresolved":false,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def __init__(self, **kwargs):"},{"line_number":220,"context_line":"        if \u0027message\u0027 in kwargs:"},{"line_number":221,"context_line":"            self.message \u003d str(kwargs[\u0027message\u0027])"},{"line_number":222,"context_line":"            del kwargs[\u0027message\u0027]"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FnPc%3D","line":221,"in_reply_to":"AAAAS3%2F%2Fo%2F0%3D","updated":"2013-09-24 00:40:59.000000000","message":"https://review.openstack.org/#/c/42395\n  --- doesn\u0027t deal with the string issue in NvpApiClient, \n\nhttps://review.openstack.org/42387 \n  ----  Doesn\u0027t deal with the fact that message is being passed to __init__ for NvpApiExceptions.\n\nThe Exception base class uses the first argument as message attribute, I am not sure I see the benefit in neutron\u0027s multiple base exception classes in calling Exception.__init__","commit_id":"882475a85f12bbb6fd874dea2e124943ed9695b8"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"dc892e41d4449e506649708cd2f2505ccc1ea22b","unresolved":false,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def __init__(self, **kwargs):"},{"line_number":220,"context_line":"        if \u0027message\u0027 in kwargs:"},{"line_number":221,"context_line":"            self.message \u003d str(kwargs[\u0027message\u0027])"},{"line_number":222,"context_line":"            del kwargs[\u0027message\u0027]"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2Fo%2F0%3D","line":221,"in_reply_to":"AAAAS3%2F%2FpEI%3D","updated":"2013-09-23 15:08:58.000000000","message":"the author of that patch has commit (and merged) another patch (https://review.openstack.org/42387    change-id I3965bffb1c2c2eee0af440d1ecd30ccb3bb958d5), which use another attr msg to act as message, the shadow of Exception.message still remains, but unicode(e) works now","commit_id":"882475a85f12bbb6fd874dea2e124943ed9695b8"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"ac5eec0c0808d67f4c2dedd93d80f3d5cda76bd9","unresolved":false,"context_lines":[{"line_number":219,"context_line":"    def __init__(self, **kwargs):"},{"line_number":220,"context_line":"        if \u0027message\u0027 in kwargs:"},{"line_number":221,"context_line":"            self.message \u003d str(kwargs[\u0027message\u0027])"},{"line_number":222,"context_line":"            del kwargs[\u0027message\u0027]"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        try:"},{"line_number":225,"context_line":"            self._error_string \u003d self.message % kwargs"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2Fp6I%3D","line":222,"updated":"2013-09-23 10:44:17.000000000","message":"self.message \u003d kwargs.pop(\u0027message\u0027, None)","commit_id":"882475a85f12bbb6fd874dea2e124943ed9695b8"},{"author":{"_account_id":6522,"name":"Sean McCully","email":"sean_mccully@yahoo.com","username":"sean-mccully"},"change_message_id":"8525df1dd1ef20856d34e7f13499e31e921ae64a","unresolved":false,"context_lines":[{"line_number":219,"context_line":"    def __init__(self, **kwargs):"},{"line_number":220,"context_line":"        if \u0027message\u0027 in kwargs:"},{"line_number":221,"context_line":"            self.message \u003d str(kwargs[\u0027message\u0027])"},{"line_number":222,"context_line":"            del kwargs[\u0027message\u0027]"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        try:"},{"line_number":225,"context_line":"            self._error_string \u003d self.message % kwargs"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2Fpa0%3D","line":222,"in_reply_to":"AAAAS3%2F%2Fp6I%3D","updated":"2013-09-23 13:26:31.000000000","message":"ok","commit_id":"882475a85f12bbb6fd874dea2e124943ed9695b8"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"237a2b96bae93ac60da7def781a69fd29abbea76","unresolved":false,"context_lines":[{"line_number":227,"context_line":"            # at least get the core message out if something happened"},{"line_number":228,"context_line":"            self._error_string \u003d self.message"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def __str__(self):"},{"line_number":231,"context_line":"        return str(self._error_string)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FpKo%3D","line":230,"updated":"2013-09-23 14:28:31.000000000","message":"should this class support __unicode__?","commit_id":"882475a85f12bbb6fd874dea2e124943ed9695b8"},{"author":{"_account_id":6522,"name":"Sean McCully","email":"sean_mccully@yahoo.com","username":"sean-mccully"},"change_message_id":"cc8ee0d25845611d41056a15b6901b3faf4c4a21","unresolved":false,"context_lines":[{"line_number":227,"context_line":"            # at least get the core message out if something happened"},{"line_number":228,"context_line":"            self._error_string \u003d self.message"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def __str__(self):"},{"line_number":231,"context_line":"        return str(self._error_string)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FnOI%3D","line":230,"in_reply_to":"AAAAS3%2F%2FpKo%3D","updated":"2013-09-24 00:40:59.000000000","message":"sure","commit_id":"882475a85f12bbb6fd874dea2e124943ed9695b8"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"ac5eec0c0808d67f4c2dedd93d80f3d5cda76bd9","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            self._error_string \u003d self.message"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def __str__(self):"},{"line_number":231,"context_line":"        return str(self._error_string)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"class UnAuthorizedRequest(NvpApiException):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2Fp5A%3D","line":231,"updated":"2013-09-23 10:44:17.000000000","message":"it seems that error string has been built to be a string. Conversion appears unnecessary","commit_id":"882475a85f12bbb6fd874dea2e124943ed9695b8"},{"author":{"_account_id":6522,"name":"Sean McCully","email":"sean_mccully@yahoo.com","username":"sean-mccully"},"change_message_id":"8525df1dd1ef20856d34e7f13499e31e921ae64a","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            self._error_string \u003d self.message"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def __str__(self):"},{"line_number":231,"context_line":"        return str(self._error_string)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"class UnAuthorizedRequest(NvpApiException):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FpbA%3D","line":231,"in_reply_to":"AAAAS3%2F%2Fp5A%3D","updated":"2013-09-23 13:26:31.000000000","message":"error_string, will be of type message when TypeError is raised","commit_id":"882475a85f12bbb6fd874dea2e124943ed9695b8"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"e3edd55716b825d762fdbc63be1e971d16a8fa8f","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    message \u003d _(\"An unknown exception occurred.\")"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def __init__(self, **kwargs):"},{"line_number":220,"context_line":"        if \u0027message\u0027 in kwargs:"},{"line_number":221,"context_line":"            self.message \u003d kwargs.pop(\u0027message\u0027)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2FkfU%3D","line":220,"updated":"2013-09-24 15:28:39.000000000","message":"Adding this support directly contradicts the usage instructions in line 212.  \n\nRather than make an exact duplicate of the Neutron\u0027s built-in exception might consider just subclassing Neutron\u0027s exception.  That version is also more secure because it does not accept random format strings and apply the args (doing so opens possible vector for log spoofing).","commit_id":"9fd23d4c316e41b647dee6b9cbf3ceb7d51c704b"},{"author":{"_account_id":6522,"name":"Sean McCully","email":"sean_mccully@yahoo.com","username":"sean-mccully"},"change_message_id":"80b46aec4f087ef3379fd84f15bad7baf680ac93","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    message \u003d _(\"An unknown exception occurred.\")"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def __init__(self, **kwargs):"},{"line_number":220,"context_line":"        if \u0027message\u0027 in kwargs:"},{"line_number":221,"context_line":"            self.message \u003d kwargs.pop(\u0027message\u0027)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2FilQ%3D","line":220,"in_reply_to":"AAAAS3%2F%2FkfU%3D","updated":"2013-09-25 00:39:15.000000000","message":"Sounds good.","commit_id":"9fd23d4c316e41b647dee6b9cbf3ceb7d51c704b"}],"neutron/plugins/nicira/nvplib.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"ac5eec0c0808d67f4c2dedd93d80f3d5cda76bd9","unresolved":false,"context_lines":[{"line_number":1044,"context_line":"    l \u003d dict((k, v) for k, v in exception_locals.iteritems()"},{"line_number":1045,"context_line":"             if k !\u003d \u0027request\u0027)"},{"line_number":1046,"context_line":"    msg.append(_(\"locals\u003d[%s]\") % str(l))"},{"line_number":1047,"context_line":"    return \u0027 \u0027.join(str(msg))"},{"line_number":1048,"context_line":""},{"line_number":1049,"context_line":""},{"line_number":1050,"context_line":"def do_request(*args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2Fp6Q%3D","line":1047,"updated":"2013-09-23 10:44:17.000000000","message":"msg is a list, not sure converting it to string is the right approach here.\n\nFor example:\n\n\u003e\u003e\u003e x\u003d[\u0027aa\u0027,\u002799\u0027]\n\u003e\u003e\u003e \",\".join(x)\n\u0027aa,99\u0027\n\u003e\u003e\u003e \",\".join(str(x))\n\"[,\u0027,a,a,\u0027,,, ,\u0027,9,9,\u0027,]\"","commit_id":"882475a85f12bbb6fd874dea2e124943ed9695b8"},{"author":{"_account_id":6522,"name":"Sean McCully","email":"sean_mccully@yahoo.com","username":"sean-mccully"},"change_message_id":"8525df1dd1ef20856d34e7f13499e31e921ae64a","unresolved":false,"context_lines":[{"line_number":1044,"context_line":"    l \u003d dict((k, v) for k, v in exception_locals.iteritems()"},{"line_number":1045,"context_line":"             if k !\u003d \u0027request\u0027)"},{"line_number":1046,"context_line":"    msg.append(_(\"locals\u003d[%s]\") % str(l))"},{"line_number":1047,"context_line":"    return \u0027 \u0027.join(str(msg))"},{"line_number":1048,"context_line":""},{"line_number":1049,"context_line":""},{"line_number":1050,"context_line":"def do_request(*args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2Fpbg%3D","line":1047,"in_reply_to":"AAAAS3%2F%2Fp6Q%3D","updated":"2013-09-23 13:26:31.000000000","message":"You\u0027re right, not sure what I was thinking there.","commit_id":"882475a85f12bbb6fd874dea2e124943ed9695b8"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"e3edd55716b825d762fdbc63be1e971d16a8fa8f","unresolved":false,"context_lines":[{"line_number":1040,"context_line":"    :returns: a formatted string."},{"line_number":1041,"context_line":"    \"\"\""},{"line_number":1042,"context_line":"    msg \u003d [str(_(\"Error. %(type)s exception: %(exc)s.\") %"},{"line_number":1043,"context_line":"           {\u0027type\u0027: str(etype), \u0027exc\u0027: str(e)})]"},{"line_number":1044,"context_line":"    l \u003d dict((k, v) for k, v in exception_locals.iteritems()"},{"line_number":1045,"context_line":"             if k !\u003d \u0027request\u0027)"},{"line_number":1046,"context_line":"    msg.append(str(_(\"locals\u003d[%s]\") % str(l)))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2Fkh8%3D","line":1043,"updated":"2013-09-24 15:28:39.000000000","message":"There\u0027s lots of redundant stringifying going on here (3x).  There\u0027s no reason to call str() and then pass the result to a format string that uses %s and then call string again.","commit_id":"9fd23d4c316e41b647dee6b9cbf3ceb7d51c704b"},{"author":{"_account_id":6522,"name":"Sean McCully","email":"sean_mccully@yahoo.com","username":"sean-mccully"},"change_message_id":"80b46aec4f087ef3379fd84f15bad7baf680ac93","unresolved":false,"context_lines":[{"line_number":1040,"context_line":"    :returns: a formatted string."},{"line_number":1041,"context_line":"    \"\"\""},{"line_number":1042,"context_line":"    msg \u003d [str(_(\"Error. %(type)s exception: %(exc)s.\") %"},{"line_number":1043,"context_line":"           {\u0027type\u0027: str(etype), \u0027exc\u0027: str(e)})]"},{"line_number":1044,"context_line":"    l \u003d dict((k, v) for k, v in exception_locals.iteritems()"},{"line_number":1045,"context_line":"             if k !\u003d \u0027request\u0027)"},{"line_number":1046,"context_line":"    msg.append(str(_(\"locals\u003d[%s]\") % str(l)))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2FisQ%3D","line":1043,"in_reply_to":"AAAAS3%2F%2Fkh8%3D","updated":"2013-09-25 00:39:15.000000000","message":"Sure there is, otherwise it wouldn\u0027t have caused an issue. Though the current usage might have been excessive. The problem appears to be with the Message obect(s) in conjunction with the join stmt.","commit_id":"9fd23d4c316e41b647dee6b9cbf3ceb7d51c704b"}]}
