)]}'
{"cinderclient/apiclient/base.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"0261b530982e7220ee479369abc709e04851e4f9","unresolved":false,"context_lines":[{"line_number":508,"context_line":""},{"line_number":509,"context_line":"            raise AttributeError(k)"},{"line_number":510,"context_line":"        else:"},{"line_number":511,"context_line":"            if k in self.__dict__:"},{"line_number":512,"context_line":"                return self.__dict__[k]"},{"line_number":513,"context_line":"            return self._info[k]"},{"line_number":514,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a74a57a_ac23a004","line":511,"updated":"2016-11-23 11:39:16.000000000","message":"-1: Don\u0027t fix 2 things in the same patch, and this one has a LP bug and a patch under review to fix it: https://review.openstack.org/391515","commit_id":"1cda8e827a8bedf4176c69e45c0c0c9668725d6d"},{"author":{"_account_id":6938,"name":"Alexey Ovchinnikov","email":"aovchinnikov@mirantis.com","username":"aovchinnikov"},"change_message_id":"e14f1007ea5a008768a870d7546607d2ade44c6f","unresolved":false,"context_lines":[{"line_number":508,"context_line":""},{"line_number":509,"context_line":"            raise AttributeError(k)"},{"line_number":510,"context_line":"        else:"},{"line_number":511,"context_line":"            if k in self.__dict__:"},{"line_number":512,"context_line":"                return self.__dict__[k]"},{"line_number":513,"context_line":"            return self._info[k]"},{"line_number":514,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a74a57a_c24ee5c0","line":511,"in_reply_to":"5a74a57a_ac23a004","updated":"2016-11-23 12:19:53.000000000","message":"Well, actually I was fixing .-typo and decided to bundle another minor refactoring with it. Since it is a typo (and a somewhat old one) it has never occurred to me to check for a  bug/conflicting commit. Also a nitpick: a bug mentioned in https://review.openstack.org/391515 is about unicode support and not about a typo. Anyway, I\u0027ll just re-upload the refactoring part.","commit_id":"1cda8e827a8bedf4176c69e45c0c0c9668725d6d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b501d80685f2b1b26c55ade03f366ae91443faa7","unresolved":false,"context_lines":[{"line_number":489,"context_line":"        return None"},{"line_number":490,"context_line":""},{"line_number":491,"context_line":"    def _add_details(self, info):"},{"line_number":492,"context_line":"        for (k, v) in six.iteritems(info):"},{"line_number":493,"context_line":"            try:"},{"line_number":494,"context_line":"                setattr(self, k, v)"},{"line_number":495,"context_line":"            except AttributeError:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_30641148","line":492,"range":{"start_line":492,"start_character":22,"end_line":492,"end_character":41},"updated":"2016-11-24 10:24:48.000000000","message":"nit: This should be changed to `info.items()`, but I guess that\u0027s for another patch.","commit_id":"5d692deb7f188735ceadee1e5b8fb8360c621901"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"372ed6604a3c10ec7bb70b576b5c1c97946332e5","unresolved":false,"context_lines":[{"line_number":492,"context_line":"        for (k, v) in six.iteritems(info):"},{"line_number":493,"context_line":"            try:"},{"line_number":494,"context_line":"                setattr(self, k, v)"},{"line_number":495,"context_line":"            except AttributeError:"},{"line_number":496,"context_line":"                # In this case we already defined the attribute on the class"},{"line_number":497,"context_line":"                continue"},{"line_number":498,"context_line":"            except UnicodeEncodeError:"},{"line_number":499,"context_line":"                pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_e5be7dfe","line":496,"range":{"start_line":495,"start_character":0,"end_line":496,"end_character":76},"updated":"2016-11-23 16:40:32.000000000","message":"When we actually can get this AttrError?","commit_id":"5d692deb7f188735ceadee1e5b8fb8360c621901"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b501d80685f2b1b26c55ade03f366ae91443faa7","unresolved":false,"context_lines":[{"line_number":492,"context_line":"        for (k, v) in six.iteritems(info):"},{"line_number":493,"context_line":"            try:"},{"line_number":494,"context_line":"                setattr(self, k, v)"},{"line_number":495,"context_line":"            except AttributeError:"},{"line_number":496,"context_line":"                # In this case we already defined the attribute on the class"},{"line_number":497,"context_line":"                continue"},{"line_number":498,"context_line":"            except UnicodeEncodeError:"},{"line_number":499,"context_line":"                pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_eb30e8ea","line":496,"range":{"start_line":495,"start_character":0,"end_line":496,"end_character":76},"in_reply_to":"5a74a57a_1151e40e","updated":"2016-11-24 10:24:48.000000000","message":"As far as I can tell this will never be raised... But I could be wrong.","commit_id":"5d692deb7f188735ceadee1e5b8fb8360c621901"},{"author":{"_account_id":6938,"name":"Alexey Ovchinnikov","email":"aovchinnikov@mirantis.com","username":"aovchinnikov"},"change_message_id":"ea76bb5c0da919adc2e64ff1f3c2b91dda59ec30","unresolved":false,"context_lines":[{"line_number":492,"context_line":"        for (k, v) in six.iteritems(info):"},{"line_number":493,"context_line":"            try:"},{"line_number":494,"context_line":"                setattr(self, k, v)"},{"line_number":495,"context_line":"            except AttributeError:"},{"line_number":496,"context_line":"                # In this case we already defined the attribute on the class"},{"line_number":497,"context_line":"                continue"},{"line_number":498,"context_line":"            except UnicodeEncodeError:"},{"line_number":499,"context_line":"                pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_1151e40e","line":496,"range":{"start_line":495,"start_character":0,"end_line":496,"end_character":76},"in_reply_to":"5a74a57a_e5be7dfe","updated":"2016-11-24 05:03:58.000000000","message":"From the looks of the code when we try to setattr already existing attribute. Also I believe you\u0027ll get a more meaningful answer from the code\u0027s original author -- I was refactoring under the assumption that a codepiece sitting in the tree for more than three years without a change is more or less correct and had not dug deep into it.","commit_id":"5d692deb7f188735ceadee1e5b8fb8360c621901"},{"author":{"_account_id":6938,"name":"Alexey Ovchinnikov","email":"aovchinnikov@mirantis.com","username":"aovchinnikov"},"change_message_id":"1dec2c024220343566985fb1e44ec68fcfd74ec0","unresolved":false,"context_lines":[{"line_number":492,"context_line":"        for (k, v) in six.iteritems(info):"},{"line_number":493,"context_line":"            try:"},{"line_number":494,"context_line":"                setattr(self, k, v)"},{"line_number":495,"context_line":"            except AttributeError:"},{"line_number":496,"context_line":"                # In this case we already defined the attribute on the class"},{"line_number":497,"context_line":"                continue"},{"line_number":498,"context_line":"            except UnicodeEncodeError:"},{"line_number":499,"context_line":"                pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_b1c74211","line":496,"range":{"start_line":495,"start_character":0,"end_line":496,"end_character":76},"in_reply_to":"5a74a57a_eb30e8ea","updated":"2016-11-24 11:43:02.000000000","message":"AFAIK this class gets heavily subclassed so in theory someone could redefine __setattr__ to throw AttributeError somewhere else.","commit_id":"5d692deb7f188735ceadee1e5b8fb8360c621901"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"650909f8dce347e999c34985cbe8b3f4cb14bd5b","unresolved":false,"context_lines":[{"line_number":492,"context_line":"        for (k, v) in six.iteritems(info):"},{"line_number":493,"context_line":"            try:"},{"line_number":494,"context_line":"                setattr(self, k, v)"},{"line_number":495,"context_line":"            except AttributeError:"},{"line_number":496,"context_line":"                # In this case we already defined the attribute on the class"},{"line_number":497,"context_line":"                continue"},{"line_number":498,"context_line":"            except UnicodeEncodeError:"},{"line_number":499,"context_line":"                pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_51feee38","line":496,"range":{"start_line":495,"start_character":0,"end_line":496,"end_character":76},"in_reply_to":"5a74a57a_eb30e8ea","updated":"2016-11-24 11:44:47.000000000","message":"Gorka, I think you aren\u0027t wrong) Neither usual setattr nor usual dict[\u0027key\u0027] construction could raised such an exception.","commit_id":"5d692deb7f188735ceadee1e5b8fb8360c621901"}]}
