)]}'
{"nova/objects/base.py":[{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"e1348f02ea13f9b709f5aafbc5dd6f8256f601ba","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            return getattr(self, attrname)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        def setter(self, value, name\u003dname, field\u003dfield):"},{"line_number":64,"context_line":"            self._changed_fields.add(name)"},{"line_number":65,"context_line":"            try:"},{"line_number":66,"context_line":"                return setattr(self, get_attrname(name),"},{"line_number":67,"context_line":"                               field.coerce(self, name, value))"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATH%2F%2Frog%3D","line":64,"updated":"2013-10-11 09:36:41.000000000","message":"Unrelated, but I do wonder we do this before type checking - i.e. we may not end up changing the field if we raise an exception","commit_id":"bcae1bfd140eb05ef2589229399a7c02c6fe961f"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"e1348f02ea13f9b709f5aafbc5dd6f8256f601ba","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            try:"},{"line_number":66,"context_line":"                return setattr(self, get_attrname(name),"},{"line_number":67,"context_line":"                               field.coerce(self, name, value))"},{"line_number":68,"context_line":"            except Exception:"},{"line_number":69,"context_line":"                attr \u003d \"%s.%s\" % (self.obj_name(), name)"},{"line_number":70,"context_line":"                LOG.exception(_(\u0027Error setting %(attr)s\u0027) %"},{"line_number":71,"context_line":"                              {\u0027attr\u0027: attr})"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATH%2F%2FroY%3D","line":68,"updated":"2013-10-11 09:36:41.000000000","message":"Could this be narrowed to TypeError, ValueError now?","commit_id":"bcae1bfd140eb05ef2589229399a7c02c6fe961f"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"17be4f35cf2dcadffad95aed7013e1d768ec3636","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            try:"},{"line_number":66,"context_line":"                return setattr(self, get_attrname(name),"},{"line_number":67,"context_line":"                               field.coerce(self, name, value))"},{"line_number":68,"context_line":"            except Exception:"},{"line_number":69,"context_line":"                attr \u003d \"%s.%s\" % (self.obj_name(), name)"},{"line_number":70,"context_line":"                LOG.exception(_(\u0027Error setting %(attr)s\u0027) %"},{"line_number":71,"context_line":"                              {\u0027attr\u0027: attr})"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATH%2F%2FqHU%3D","line":68,"in_reply_to":"AAAATH%2F%2FqZU%3D","updated":"2013-10-11 16:16:21.000000000","message":"Ok, I guess it\u0027s not a big deal since it just re-raises","commit_id":"bcae1bfd140eb05ef2589229399a7c02c6fe961f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"569fd52f40020e6c7a7c7c0df84f458f63349573","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            try:"},{"line_number":66,"context_line":"                return setattr(self, get_attrname(name),"},{"line_number":67,"context_line":"                               field.coerce(self, name, value))"},{"line_number":68,"context_line":"            except Exception:"},{"line_number":69,"context_line":"                attr \u003d \"%s.%s\" % (self.obj_name(), name)"},{"line_number":70,"context_line":"                LOG.exception(_(\u0027Error setting %(attr)s\u0027) %"},{"line_number":71,"context_line":"                              {\u0027attr\u0027: attr})"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATH%2F%2FqZU%3D","line":68,"in_reply_to":"AAAATH%2F%2FroY%3D","updated":"2013-10-11 15:14:53.000000000","message":"Well, technically, although we wouldn\u0027t get the helpful logging below that tells us what attribute failed. On the off chance that something fails to catch and convert to a Type/ValueError, I\u0027d prefer to always have it logged for easier debugging, especially since we re-raise the same thing.\n\nDebugging these failures without the log statement below is really really hard :)","commit_id":"bcae1bfd140eb05ef2589229399a7c02c6fe961f"}],"nova/tests/objects/test_objects.py":[{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"e1348f02ea13f9b709f5aafbc5dd6f8256f601ba","unresolved":false,"context_lines":[{"line_number":454,"context_line":""},{"line_number":455,"context_line":"    def test_load_in_base(self):"},{"line_number":456,"context_line":"        class Foo(base.NovaObject):"},{"line_number":457,"context_line":"            fields \u003d {\u0027foobar\u0027: fields.Field(fields.Integer())}"},{"line_number":458,"context_line":"        obj \u003d Foo()"},{"line_number":459,"context_line":"        # NOTE(danms): Can\u0027t use assertRaisesRegexp() because of py26"},{"line_number":460,"context_line":"        raised \u003d False"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATH%2F%2FrnM%3D","line":457,"updated":"2013-10-11 09:36:41.000000000","message":"Could be IntegerField, but I reckon there\u0027s no harm in at least one of the tests doing it the explicit way ... since that should work too","commit_id":"bcae1bfd140eb05ef2589229399a7c02c6fe961f"}]}
