)]}'
{"oslo_versionedobjects/base.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"50d9b5b7df569b8bf6505bca81540124b60c3865","unresolved":false,"context_lines":[{"line_number":824,"context_line":"                _do_backport(\u00271.0\u0027)"},{"line_number":825,"context_line":"        except exception.TargetBeforeSubobjectExistedException:"},{"line_number":826,"context_line":"            # Child did not exist, so delete it from the primitive"},{"line_number":827,"context_line":"            del primitive[\u0027objects\u0027]"},{"line_number":828,"context_line":""},{"line_number":829,"context_line":"    def obj_what_changed(self):"},{"line_number":830,"context_line":"        changes \u003d set(self._changed_fields)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_0431450b","line":827,"updated":"2015-08-10 22:50:53.000000000","message":"This whole block is starting to look really similar to the base object. The originally existed before the base object had automatic backporting of sub objects. Is there anything blocking us from just using the base method? Clearly, we still need to support falling back to child_versions, but could we build some common bits and call them from both here and the base class to get more reuse?","commit_id":"0ea3e7b5897d271880cbeaf57a1eede5b6c3e675"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"b61901d9ed1af1bd7a524276df2f05fbb3eb4b22","unresolved":false,"context_lines":[{"line_number":824,"context_line":"                _do_backport(\u00271.0\u0027)"},{"line_number":825,"context_line":"        except exception.TargetBeforeSubobjectExistedException:"},{"line_number":826,"context_line":"            # Child did not exist, so delete it from the primitive"},{"line_number":827,"context_line":"            del primitive[\u0027objects\u0027]"},{"line_number":828,"context_line":""},{"line_number":829,"context_line":"    def obj_what_changed(self):"},{"line_number":830,"context_line":"        changes \u003d set(self._changed_fields)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_a57e22ad","line":827,"in_reply_to":"1a4dcd0f_0431450b","updated":"2015-08-11 14:57:53.000000000","message":"I think the _do_backport() part can *maybe* be the same between the 2. I tried pulling that out to be the same between each other and it looks like it cleaned up a little better.","commit_id":"0ea3e7b5897d271880cbeaf57a1eede5b6c3e675"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"d515c8b46820ac23dea249ddf265c77c75f077a0","unresolved":false,"context_lines":[{"line_number":1080,"context_line":"            return"},{"line_number":1081,"context_line":""},{"line_number":1082,"context_line":""},{"line_number":1083,"context_line":"def do_backport(to_version, parent, field, primitive):"},{"line_number":1084,"context_line":"    obj \u003d getattr(parent, field)"},{"line_number":1085,"context_line":"    if not obj:"},{"line_number":1086,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_6596daf1","line":1083,"updated":"2015-08-11 14:58:35.000000000","message":"Should I prefix this one with _?","commit_id":"fe9ebcd46c0f66070c5fbfe473c35e149cd73367"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"10eeea7af11b707a63a551c044f5589b923250c4","unresolved":false,"context_lines":[{"line_number":1080,"context_line":"            return"},{"line_number":1081,"context_line":""},{"line_number":1082,"context_line":""},{"line_number":1083,"context_line":"def do_backport(to_version, parent, field, primitive):"},{"line_number":1084,"context_line":"    obj \u003d getattr(parent, field)"},{"line_number":1085,"context_line":"    if not obj:"},{"line_number":1086,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_8d2c689a","line":1083,"in_reply_to":"1a4dcd0f_6596daf1","updated":"2015-08-11 16:25:07.000000000","message":"Actually both of these should be prefixed, unless you want them to be formal library API. Neither should be, AFAICT, right?","commit_id":"fe9ebcd46c0f66070c5fbfe473c35e149cd73367"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"b0e8e10ad509d5506791398df57d00172ca674c8","unresolved":false,"context_lines":[{"line_number":1080,"context_line":"            return"},{"line_number":1081,"context_line":""},{"line_number":1082,"context_line":""},{"line_number":1083,"context_line":"def do_backport(to_version, parent, field, primitive):"},{"line_number":1084,"context_line":"    obj \u003d getattr(parent, field)"},{"line_number":1085,"context_line":"    if not obj:"},{"line_number":1086,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_9d077bc9","line":1083,"in_reply_to":"1a4dcd0f_8d2c689a","updated":"2015-08-12 19:28:55.000000000","message":"Yup, Agreed. Changed them both.","commit_id":"fe9ebcd46c0f66070c5fbfe473c35e149cd73367"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"d515c8b46820ac23dea249ddf265c77c75f077a0","unresolved":false,"context_lines":[{"line_number":1081,"context_line":""},{"line_number":1082,"context_line":""},{"line_number":1083,"context_line":"def do_backport(to_version, parent, field, primitive):"},{"line_number":1084,"context_line":"    obj \u003d getattr(parent, field)"},{"line_number":1085,"context_line":"    if not obj:"},{"line_number":1086,"context_line":"        return"},{"line_number":1087,"context_line":"    manifest \u003d (hasattr(parent, \u0027_obj_version_manifest\u0027) and"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_e5266acd","line":1084,"updated":"2015-08-11 14:58:35.000000000","message":"I should probably also unit test this guy now that I pulled him out separately.","commit_id":"fe9ebcd46c0f66070c5fbfe473c35e149cd73367"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"b0e8e10ad509d5506791398df57d00172ca674c8","unresolved":false,"context_lines":[{"line_number":1081,"context_line":""},{"line_number":1082,"context_line":""},{"line_number":1083,"context_line":"def do_backport(to_version, parent, field, primitive):"},{"line_number":1084,"context_line":"    obj \u003d getattr(parent, field)"},{"line_number":1085,"context_line":"    if not obj:"},{"line_number":1086,"context_line":"        return"},{"line_number":1087,"context_line":"    manifest \u003d (hasattr(parent, \u0027_obj_version_manifest\u0027) and"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_b62db1ff","line":1084,"in_reply_to":"1a4dcd0f_48b3ae9a","updated":"2015-08-12 19:28:55.000000000","message":"Done","commit_id":"fe9ebcd46c0f66070c5fbfe473c35e149cd73367"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"10eeea7af11b707a63a551c044f5589b923250c4","unresolved":false,"context_lines":[{"line_number":1081,"context_line":""},{"line_number":1082,"context_line":""},{"line_number":1083,"context_line":"def do_backport(to_version, parent, field, primitive):"},{"line_number":1084,"context_line":"    obj \u003d getattr(parent, field)"},{"line_number":1085,"context_line":"    if not obj:"},{"line_number":1086,"context_line":"        return"},{"line_number":1087,"context_line":"    manifest \u003d (hasattr(parent, \u0027_obj_version_manifest\u0027) and"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_48b3ae9a","line":1084,"in_reply_to":"1a4dcd0f_e5266acd","updated":"2015-08-11 16:25:07.000000000","message":"Yeah, that\u0027d be good.","commit_id":"fe9ebcd46c0f66070c5fbfe473c35e149cd73367"}],"oslo_versionedobjects/tests/test_objects.py":[{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"f004a74e4b25709c7ecc612ae8a4df7fc634ac0b","unresolved":false,"context_lines":[{"line_number":409,"context_line":"        version \u003d \u00271.0\u0027"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"        compat_func \u003d \u0027obj_make_compatible_from_manifest\u0027"},{"line_number":412,"context_line":"        with mock.patch.object(self.ChildObj, compat_func) as mock_compat:"},{"line_number":413,"context_line":"            base._do_subobject_backport(version, parent, \u0027child\u0027,"},{"line_number":414,"context_line":"                                        parent_primitive)"},{"line_number":415,"context_line":"            self.assertFalse(mock_compat.called,"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa1b9901_65dcd812","line":412,"updated":"2015-08-18 13:42:09.000000000","message":"Is this the correct way to assert that nothing was called on a null child?","commit_id":"e73c93c51911276cad39804e6e2845233036c5af"}]}
