)]}'
{"neutron/objects/base.py":[{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"e5182461fc5735b85df960c34151bbdd231ba24b","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            obj_extra_fields_set.add(\u0027tenant_id\u0027)"},{"line_number":252,"context_line":"            cls.obj_extra_fields \u003d list(obj_extra_fields_set)"},{"line_number":253,"context_line":"            setattr(cls, \u0027tenant_id\u0027,"},{"line_number":254,"context_line":"                    property(lambda x: x.get(\u0027project_id\u0027, None)))"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        fields_no_update_set \u003d set(cls.fields_no_update)"},{"line_number":257,"context_line":"        for base in itertools.chain([cls], bases):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa6399be_21abfb1e","line":254,"range":{"start_line":254,"start_character":57,"end_line":254,"end_character":63},"updated":"2016-10-11 22:31:41.000000000","message":"If I understand it correctly, it\u0027s dict so you can skip `None` part. By default if get doesn\u0027t find a key, then it returns `None`.\n\n\u003e \u003e\u003e\u003e print({}.get(\u0027project_id\u0027))\n\u003e None","commit_id":"123ef064d294246d62065c62d738135be91cd162"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"00c9414f055afe09f4bf933aeebde0771e355c92","unresolved":false,"context_lines":[{"line_number":149,"context_line":"            # is included in self.items()"},{"line_number":150,"context_line":"            if name in self.fields and name not in self.synthetic_fields:"},{"line_number":151,"context_line":"                value \u003d self.fields[name].to_primitive(self, name, value)"},{"line_number":152,"context_line":"            if name \u003d\u003d \u0027tenant_id\u0027:"},{"line_number":153,"context_line":"                if (\u0027project_id\u0027 in self.fields and"},{"line_number":154,"context_line":"                        not self.obj_attr_is_set(\u0027project_id\u0027)):"},{"line_number":155,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_a666cf4e","line":152,"updated":"2016-10-14 01:56:56.000000000","message":"API tests are failing, because tenant_id is present in request, so project_id also should be there. AFAIR, if project_id wasn\u0027t set, it was copied from tenant_id [1]\n\n[1] https://github.com/openstack/neutron/blob/master/neutron/api/v2/attributes.py#L455","commit_id":"efb0b0945bb16a88542551ce7ecf53cbc4db61d0"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"1a7a97ed4aae5704c73b8fce740d11608ce9dba1","unresolved":false,"context_lines":[{"line_number":149,"context_line":"            # is included in self.items()"},{"line_number":150,"context_line":"            if name in self.fields and name not in self.synthetic_fields:"},{"line_number":151,"context_line":"                value \u003d self.fields[name].to_primitive(self, name, value)"},{"line_number":152,"context_line":"            if name \u003d\u003d \u0027tenant_id\u0027:"},{"line_number":153,"context_line":"                if (\u0027project_id\u0027 in self.fields and"},{"line_number":154,"context_line":"                        not self.obj_attr_is_set(\u0027project_id\u0027)):"},{"line_number":155,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_010e29e5","line":152,"in_reply_to":"fa6399be_a666cf4e","updated":"2016-10-17 16:32:04.000000000","message":"Yes, I have removed line 163 with populate_project_info, and that was mistake. Restored it in PS5. Lines 152-155 should prevent us from having the tenant-id when we have project-id not set in object. Other case, populate_project_info will balance the content of tenant/project ID.","commit_id":"efb0b0945bb16a88542551ce7ecf53cbc4db61d0"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"8514b1835b19afa746e01bfe0441e16ae6630e16","unresolved":false,"context_lines":[{"line_number":150,"context_line":"            # is included in self.items()"},{"line_number":151,"context_line":"            if name in self.fields and name not in self.synthetic_fields:"},{"line_number":152,"context_line":"                value \u003d self.fields[name].to_primitive(self, name, value)"},{"line_number":153,"context_line":"            if name \u003d\u003d \u0027tenant_id\u0027:"},{"line_number":154,"context_line":"                if (\u0027project_id\u0027 in self.fields and"},{"line_number":155,"context_line":"                        not self.obj_attr_is_set(\u0027project_id\u0027)):"},{"line_number":156,"context_line":"                    continue"},{"line_number":157,"context_line":"            dict_[name] \u003d value"},{"line_number":158,"context_line":"        for field_name, value in self._synthetic_fields_items():"},{"line_number":159,"context_line":"            field \u003d self.fields[field_name]"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_d080794c","line":156,"range":{"start_line":153,"start_character":0,"end_line":156,"end_character":28},"updated":"2016-10-17 18:14:31.000000000","message":"what about to having all the conditions in a single sentence like:\n\n            if name \u003d\u003d \u0027tenant_id\u0027 and (\u0027project_id\u0027 in self.fields and\n                        not self.obj_attr_is_set(\u0027project_id\u0027)):\n                    continue","commit_id":"de3ff1576a8e5574221efdfdd4daec54adb3e2a6"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"e8088ad49d78683d5598899878debe6c9d8cef7c","unresolved":false,"context_lines":[{"line_number":150,"context_line":"            # is included in self.items()"},{"line_number":151,"context_line":"            if name in self.fields and name not in self.synthetic_fields:"},{"line_number":152,"context_line":"                value \u003d self.fields[name].to_primitive(self, name, value)"},{"line_number":153,"context_line":"            if name \u003d\u003d \u0027tenant_id\u0027:"},{"line_number":154,"context_line":"                if (\u0027project_id\u0027 in self.fields and"},{"line_number":155,"context_line":"                        not self.obj_attr_is_set(\u0027project_id\u0027)):"},{"line_number":156,"context_line":"                    continue"},{"line_number":157,"context_line":"            dict_[name] \u003d value"},{"line_number":158,"context_line":"        for field_name, value in self._synthetic_fields_items():"},{"line_number":159,"context_line":"            field \u003d self.fields[field_name]"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6895a0_5e946536","line":156,"range":{"start_line":153,"start_character":0,"end_line":156,"end_character":28},"in_reply_to":"da6895a0_cd670924","updated":"2016-10-21 14:35:29.000000000","message":"yeah","commit_id":"de3ff1576a8e5574221efdfdd4daec54adb3e2a6"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"0f26082f5f9dfaa3b5e3d717e992870fd458cebe","unresolved":false,"context_lines":[{"line_number":150,"context_line":"            # is included in self.items()"},{"line_number":151,"context_line":"            if name in self.fields and name not in self.synthetic_fields:"},{"line_number":152,"context_line":"                value \u003d self.fields[name].to_primitive(self, name, value)"},{"line_number":153,"context_line":"            if name \u003d\u003d \u0027tenant_id\u0027:"},{"line_number":154,"context_line":"                if (\u0027project_id\u0027 in self.fields and"},{"line_number":155,"context_line":"                        not self.obj_attr_is_set(\u0027project_id\u0027)):"},{"line_number":156,"context_line":"                    continue"},{"line_number":157,"context_line":"            dict_[name] \u003d value"},{"line_number":158,"context_line":"        for field_name, value in self._synthetic_fields_items():"},{"line_number":159,"context_line":"            field \u003d self.fields[field_name]"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6895a0_cd670924","line":156,"range":{"start_line":153,"start_character":0,"end_line":156,"end_character":28},"in_reply_to":"fa6399be_d080794c","updated":"2016-10-20 20:41:49.000000000","message":"Seems rather nit-picky.","commit_id":"de3ff1576a8e5574221efdfdd4daec54adb3e2a6"}],"neutron/tests/unit/objects/test_base.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"4634f7878009c818e7822e43fa82663ddff95a2a","unresolved":false,"context_lines":[{"line_number":812,"context_line":"        if self._test_class.fields[\u0027project_id\u0027].nullable:"},{"line_number":813,"context_line":"            self.assertIsNone(obj.project_id)"},{"line_number":814,"context_line":"        else:"},{"line_number":815,"context_line":"            self.assertRaises(AttributeError, getattr, obj, \u0027project_id\u0027)"},{"line_number":816,"context_line":"        self.assertFalse(\u0027project_id\u0027 in dict_)"},{"line_number":817,"context_line":"        self.assertIsNone(dict_[\u0027tenant_id\u0027])"},{"line_number":818,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_f8e36631","line":815,"range":{"start_line":815,"start_character":12,"end_line":815,"end_character":73},"updated":"2016-10-12 10:12:36.000000000","message":"wouldn\u0027t it make sense to retain the behaviour for non nullable fields for tenant_id too? Meaning, making the properly raise the exception if project_id raises it.","commit_id":"b1d3db858f6ac54d0ec463fbdae306949e94dc5a"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"f177f3c5a2eddaa7c915e56d5d0f0211cc3d7a11","unresolved":false,"context_lines":[{"line_number":812,"context_line":"        if self._test_class.fields[\u0027project_id\u0027].nullable:"},{"line_number":813,"context_line":"            self.assertIsNone(obj.project_id)"},{"line_number":814,"context_line":"        else:"},{"line_number":815,"context_line":"            self.assertRaises(AttributeError, getattr, obj, \u0027project_id\u0027)"},{"line_number":816,"context_line":"        self.assertFalse(\u0027project_id\u0027 in dict_)"},{"line_number":817,"context_line":"        self.assertIsNone(dict_[\u0027tenant_id\u0027])"},{"line_number":818,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_3b14b89e","line":815,"range":{"start_line":815,"start_character":12,"end_line":815,"end_character":73},"in_reply_to":"fa6399be_cef258d2","updated":"2016-10-13 13:27:37.000000000","message":"Can\u0027t we special case it in to_dict() to drop tenant_id if project_id is None?","commit_id":"b1d3db858f6ac54d0ec463fbdae306949e94dc5a"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"40eaf594db8f2dbd21c3296939690dd7506e2a5e","unresolved":false,"context_lines":[{"line_number":812,"context_line":"        if self._test_class.fields[\u0027project_id\u0027].nullable:"},{"line_number":813,"context_line":"            self.assertIsNone(obj.project_id)"},{"line_number":814,"context_line":"        else:"},{"line_number":815,"context_line":"            self.assertRaises(AttributeError, getattr, obj, \u0027project_id\u0027)"},{"line_number":816,"context_line":"        self.assertFalse(\u0027project_id\u0027 in dict_)"},{"line_number":817,"context_line":"        self.assertIsNone(dict_[\u0027tenant_id\u0027])"},{"line_number":818,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_cef258d2","line":815,"range":{"start_line":815,"start_character":12,"end_line":815,"end_character":73},"in_reply_to":"fa6399be_f8e36631","updated":"2016-10-12 12:11:18.000000000","message":"The problem is in OVO lib [1], every field that is in obj_extra_fields is exposed in to_dict()/items() methods. So in property handler we are only allowed to return None when project-id is not set. We cannot remove the tenant-id from resulting dict, because of OVO lib will always include it...\n\n[1] https://github.com/openstack/oslo.versionedobjects/blob/master/oslo_versionedobjects/base.py#L757","commit_id":"b1d3db858f6ac54d0ec463fbdae306949e94dc5a"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"4634f7878009c818e7822e43fa82663ddff95a2a","unresolved":false,"context_lines":[{"line_number":813,"context_line":"            self.assertIsNone(obj.project_id)"},{"line_number":814,"context_line":"        else:"},{"line_number":815,"context_line":"            self.assertRaises(AttributeError, getattr, obj, \u0027project_id\u0027)"},{"line_number":816,"context_line":"        self.assertFalse(\u0027project_id\u0027 in dict_)"},{"line_number":817,"context_line":"        self.assertIsNone(dict_[\u0027tenant_id\u0027])"},{"line_number":818,"context_line":""},{"line_number":819,"context_line":"    def test_fields_no_update(self):"},{"line_number":820,"context_line":"        obj \u003d self._test_class(self.context, **self.obj_fields[0])"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa6399be_38095ede","line":817,"range":{"start_line":816,"start_character":8,"end_line":817,"end_character":45},"updated":"2016-10-12 10:12:36.000000000","message":"That doesn\u0027t make much sense to me: getting tenant_id but not project_id in the dict. I believe they should behave identically.","commit_id":"b1d3db858f6ac54d0ec463fbdae306949e94dc5a"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"7ee044b5ca2edd76ea8b317aa1789c617fcefc0f","unresolved":false,"context_lines":[{"line_number":809,"context_line":"        obj_data.pop(\u0027project_id\u0027)"},{"line_number":810,"context_line":"        obj \u003d self._test_class(self.context, **obj_data)"},{"line_number":811,"context_line":"        dict_ \u003d obj.to_dict()"},{"line_number":812,"context_line":"        if self._test_class.fields[\u0027project_id\u0027].nullable:"},{"line_number":813,"context_line":"            self.assertIsNone(obj.project_id)"},{"line_number":814,"context_line":"            self.assertIsNone(dict_[\u0027project_id\u0027])"},{"line_number":815,"context_line":"            self.assertIsNone(dict_[\u0027tenant_id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_5b327011","line":812,"range":{"start_line":812,"start_character":11,"end_line":812,"end_character":58},"updated":"2016-10-12 20:41:14.000000000","message":"Please add comment, that sometimes project_id can be nullable, if created by `HasProjectPrimaryKeyIndex` and `HasProjectPrimaryKey`","commit_id":"c431973738a5c631b1ef9c3202520a3e2d7860ae"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"7ee044b5ca2edd76ea8b317aa1789c617fcefc0f","unresolved":false,"context_lines":[{"line_number":811,"context_line":"        dict_ \u003d obj.to_dict()"},{"line_number":812,"context_line":"        if self._test_class.fields[\u0027project_id\u0027].nullable:"},{"line_number":813,"context_line":"            self.assertIsNone(obj.project_id)"},{"line_number":814,"context_line":"            self.assertIsNone(dict_[\u0027project_id\u0027])"},{"line_number":815,"context_line":"            self.assertIsNone(dict_[\u0027tenant_id\u0027])"},{"line_number":816,"context_line":"        else:"},{"line_number":817,"context_line":"            self.assertRaises(AttributeError, getattr, obj, \u0027project_id\u0027)"},{"line_number":818,"context_line":"            self.assertIsNone(obj.tenant_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_3bf93c4e","line":815,"range":{"start_line":814,"start_character":0,"end_line":815,"end_character":49},"updated":"2016-10-12 20:41:14.000000000","message":"These two and 819-820 are duplicated. You can unindent 819-820 them and remove these.","commit_id":"c431973738a5c631b1ef9c3202520a3e2d7860ae"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"8514b1835b19afa746e01bfe0441e16ae6630e16","unresolved":false,"context_lines":[{"line_number":806,"context_line":"            self.skipTest("},{"line_number":807,"context_line":"                \u0027Test class %r has no project_id in fields\u0027 % self._test_class)"},{"line_number":808,"context_line":"        obj_data \u003d copy.copy(self.obj_fields[0])"},{"line_number":809,"context_line":"        obj_data.pop(\u0027project_id\u0027)"},{"line_number":810,"context_line":"        obj \u003d self._test_class(self.context, **obj_data)"},{"line_number":811,"context_line":"        dict_ \u003d obj.to_dict()"},{"line_number":812,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_d07239b0","line":809,"updated":"2016-10-17 18:14:31.000000000","message":"Shouldn\u0027t be better to include the assertion to ensure that project_id and tenant_id has the same values before to remove it?","commit_id":"de3ff1576a8e5574221efdfdd4daec54adb3e2a6"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"e8088ad49d78683d5598899878debe6c9d8cef7c","unresolved":false,"context_lines":[{"line_number":806,"context_line":"            self.skipTest("},{"line_number":807,"context_line":"                \u0027Test class %r has no project_id in fields\u0027 % self._test_class)"},{"line_number":808,"context_line":"        obj_data \u003d copy.copy(self.obj_fields[0])"},{"line_number":809,"context_line":"        obj_data.pop(\u0027project_id\u0027)"},{"line_number":810,"context_line":"        obj \u003d self._test_class(self.context, **obj_data)"},{"line_number":811,"context_line":"        dict_ \u003d obj.to_dict()"},{"line_number":812,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da6895a0_be7ca121","line":809,"in_reply_to":"da6895a0_ed3a0de7","updated":"2016-10-21 14:35:29.000000000","message":"I was suggesting a way to cover the previous change[1], but that only happen during the creation of the object.\n\n[1]https://review.openstack.org/#/c/384949/5/neutron/objects/base.py@153","commit_id":"de3ff1576a8e5574221efdfdd4daec54adb3e2a6"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"0f26082f5f9dfaa3b5e3d717e992870fd458cebe","unresolved":false,"context_lines":[{"line_number":806,"context_line":"            self.skipTest("},{"line_number":807,"context_line":"                \u0027Test class %r has no project_id in fields\u0027 % self._test_class)"},{"line_number":808,"context_line":"        obj_data \u003d copy.copy(self.obj_fields[0])"},{"line_number":809,"context_line":"        obj_data.pop(\u0027project_id\u0027)"},{"line_number":810,"context_line":"        obj \u003d self._test_class(self.context, **obj_data)"},{"line_number":811,"context_line":"        dict_ \u003d obj.to_dict()"},{"line_number":812,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da6895a0_ed3a0de7","line":809,"in_reply_to":"fa6399be_d07239b0","updated":"2016-10-20 20:41:49.000000000","message":"? obj_fields will NOT contain tenant_id, because there is no such field (only project_id exists).","commit_id":"de3ff1576a8e5574221efdfdd4daec54adb3e2a6"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"8514b1835b19afa746e01bfe0441e16ae6630e16","unresolved":false,"context_lines":[{"line_number":810,"context_line":"        obj \u003d self._test_class(self.context, **obj_data)"},{"line_number":811,"context_line":"        dict_ \u003d obj.to_dict()"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"        self.assertNotIn(\u0027project_id\u0027, dict_)"},{"line_number":814,"context_line":"        self.assertNotIn(\u0027tenant_id\u0027, dict_)"},{"line_number":815,"context_line":""},{"line_number":816,"context_line":"    def test_fields_no_update(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_901c416c","line":813,"range":{"start_line":813,"start_character":39,"end_line":813,"end_character":44},"updated":"2016-10-17 18:14:31.000000000","message":"s/dict_/dict_.keys()","commit_id":"de3ff1576a8e5574221efdfdd4daec54adb3e2a6"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"e8088ad49d78683d5598899878debe6c9d8cef7c","unresolved":false,"context_lines":[{"line_number":810,"context_line":"        obj \u003d self._test_class(self.context, **obj_data)"},{"line_number":811,"context_line":"        dict_ \u003d obj.to_dict()"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"        self.assertNotIn(\u0027project_id\u0027, dict_)"},{"line_number":814,"context_line":"        self.assertNotIn(\u0027tenant_id\u0027, dict_)"},{"line_number":815,"context_line":""},{"line_number":816,"context_line":"    def test_fields_no_update(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6895a0_de6f9590","line":813,"range":{"start_line":813,"start_character":39,"end_line":813,"end_character":44},"in_reply_to":"da6895a0_2d25e5c1","updated":"2016-10-21 14:35:29.000000000","message":"well, I considered more clear to specify what is validating, maybe I should mention that this is a nit","commit_id":"de3ff1576a8e5574221efdfdd4daec54adb3e2a6"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"0f26082f5f9dfaa3b5e3d717e992870fd458cebe","unresolved":false,"context_lines":[{"line_number":810,"context_line":"        obj \u003d self._test_class(self.context, **obj_data)"},{"line_number":811,"context_line":"        dict_ \u003d obj.to_dict()"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"        self.assertNotIn(\u0027project_id\u0027, dict_)"},{"line_number":814,"context_line":"        self.assertNotIn(\u0027tenant_id\u0027, dict_)"},{"line_number":815,"context_line":""},{"line_number":816,"context_line":"    def test_fields_no_update(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6895a0_2d25e5c1","line":813,"range":{"start_line":813,"start_character":39,"end_line":813,"end_character":44},"in_reply_to":"fa6399be_901c416c","updated":"2016-10-20 20:41:49.000000000","message":"How is it better?..","commit_id":"de3ff1576a8e5574221efdfdd4daec54adb3e2a6"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"8514b1835b19afa746e01bfe0441e16ae6630e16","unresolved":false,"context_lines":[{"line_number":811,"context_line":"        dict_ \u003d obj.to_dict()"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"        self.assertNotIn(\u0027project_id\u0027, dict_)"},{"line_number":814,"context_line":"        self.assertNotIn(\u0027tenant_id\u0027, dict_)"},{"line_number":815,"context_line":""},{"line_number":816,"context_line":"    def test_fields_no_update(self):"},{"line_number":817,"context_line":"        obj \u003d self._test_class(self.context, **self.obj_fields[0])"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_101f515c","line":814,"range":{"start_line":814,"start_character":38,"end_line":814,"end_character":43},"updated":"2016-10-17 18:14:31.000000000","message":"ditto: line 813","commit_id":"de3ff1576a8e5574221efdfdd4daec54adb3e2a6"}]}
