)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"e2d877fa2d7c395ef84a636b4d79b0f76fe40b16","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Also fixes spelling errors:resoruces."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: Iae4ce0fe84fae810711cc8c3fdb94eb9ca1d772e"},{"line_number":20,"context_line":"Closes-Bug: #1586268"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"bacf61ea_5bdf950c","line":20,"updated":"2016-08-05 20:16:27.000000000","message":"It looks like python-keystoneclient isn\u0027t actually tracked in this bug anymore. Steve removed it.\n\nhttps://bugs.launchpad.net/python-cinderclient/+bug/1586268\n\nAre we still effected by this bug?","commit_id":"573790914b2dc92c942726627cd6ac7427149b14"}],"keystoneclient/tests/unit/test_base.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"f77a38352d98a907afa216174b0508a59592f960","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        r2 \u003d base.Resource(None, {\u0027name\u0027: \u0027joe\u0027, \u0027age\u0027: 12})"},{"line_number":75,"context_line":"        self.assertEqual(r1, r2)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        # Two resources with different ID: never equal"},{"line_number":78,"context_line":"        r1 \u003d base.Resource(None, {\u0027id\u0027: 1, \u0027name\u0027: \u0027hello\u0027})"},{"line_number":79,"context_line":"        r2 \u003d base.Resource(None, {\u0027id\u0027: 2, \u0027name\u0027: \u0027hello\u0027})"},{"line_number":80,"context_line":"        self.assertTrue(r1 !\u003d r2)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_ea833c01","line":77,"range":{"start_line":77,"start_character":8,"end_line":77,"end_character":54},"updated":"2016-08-05 08:12:59.000000000","message":"Does these comment still accurate?","commit_id":"dc784e485839030cf5d5bc8e6e9d1acaf6eda15b"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"075d322be87a93f4ce8b26e8feeeee53bf6d7656","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        r2 \u003d base.Resource(None, {\u0027id\u0027: 1, \u0027name\u0027: \u0027hello\u0027})"},{"line_number":60,"context_line":"        self.assertNotEqual(r1, r2)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        # Two resources with same ID: equal if their info is equal"},{"line_number":63,"context_line":"        r1 \u003d base.Resource(None, {\u0027id\u0027: 1, \u0027name\u0027: \u0027hello\u0027})"},{"line_number":64,"context_line":"        r2 \u003d base.Resource(None, {\u0027id\u0027: 1, \u0027name\u0027: \u0027hello\u0027})"},{"line_number":65,"context_line":"        self.assertTrue(r1 \u003d\u003d r2)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bacf61ea_9db72139","line":62,"range":{"start_line":62,"start_character":8,"end_line":62,"end_character":66},"updated":"2016-08-08 03:29:34.000000000","message":"reword these comments to include your change below, or let it as is and add some lines separately to test your change in base.py","commit_id":"573790914b2dc92c942726627cd6ac7427149b14"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"39be2f1a8991a489e7b8161df6a82b37cbdf0a81","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        # Two resources with same ID: equal if their info is equal"},{"line_number":63,"context_line":"        r1 \u003d base.Resource(None, {\u0027id\u0027: 1, \u0027name\u0027: \u0027hello\u0027})"},{"line_number":64,"context_line":"        r2 \u003d base.Resource(None, {\u0027id\u0027: 1, \u0027name\u0027: \u0027hello\u0027})"},{"line_number":65,"context_line":"        self.assertTrue(r1 \u003d\u003d r2)"},{"line_number":66,"context_line":"        self.assertFalse(r1 !\u003d r2)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        # Two resources of different types: never equal"},{"line_number":69,"context_line":"        r1 \u003d base.Resource(None, {\u0027id\u0027: 1})"}],"source_content_type":"text/x-python","patch_set":5,"id":"bacf61ea_d26a2d80","line":66,"range":{"start_line":65,"start_character":8,"end_line":66,"end_character":34},"updated":"2016-08-07 15:42:05.000000000","message":"I don\u0027t see what this is buying us. Why not use assertEqual and assertNotEqual ? It seems odd to be using assertTrue and assertFalse for equality comparisons.\n\nIf you really want to do this, please leave a comment and be clear why this is needed as it is.\n\nAlso, wasn\u0027t this true before in Python 2 ? If so, is this really needed ?","commit_id":"573790914b2dc92c942726627cd6ac7427149b14"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"075d322be87a93f4ce8b26e8feeeee53bf6d7656","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        # Two resources with same ID: equal if their info is equal"},{"line_number":63,"context_line":"        r1 \u003d base.Resource(None, {\u0027id\u0027: 1, \u0027name\u0027: \u0027hello\u0027})"},{"line_number":64,"context_line":"        r2 \u003d base.Resource(None, {\u0027id\u0027: 1, \u0027name\u0027: \u0027hello\u0027})"},{"line_number":65,"context_line":"        self.assertTrue(r1 \u003d\u003d r2)"},{"line_number":66,"context_line":"        self.assertFalse(r1 !\u003d r2)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        # Two resources of different types: never equal"},{"line_number":69,"context_line":"        r1 \u003d base.Resource(None, {\u0027id\u0027: 1})"}],"source_content_type":"text/x-python","patch_set":5,"id":"bacf61ea_3d3ef5b7","line":66,"range":{"start_line":65,"start_character":8,"end_line":66,"end_character":34},"in_reply_to":"bacf61ea_d26a2d80","updated":"2016-08-08 03:29:34.000000000","message":"without the change in base.py, the follow code should all pass.\n    self.assertEqual(r1, r2)\n    self.assertNotEqual(r1, r2)\n\nthe change here is for a way to assert self.assertNotEqual(r1, r2) is false.\n\npls add some lines to explain why do the change here as you did in the commit message.","commit_id":"573790914b2dc92c942726627cd6ac7427149b14"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"075d322be87a93f4ce8b26e8feeeee53bf6d7656","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        r2 \u003d roles.Role(None, {\u0027id\u0027: 1})"},{"line_number":71,"context_line":"        self.assertNotEqual(r1, r2)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        # Two resources with no ID: equal if their info is equal"},{"line_number":74,"context_line":"        r1 \u003d base.Resource(None, {\u0027name\u0027: \u0027joe\u0027, \u0027age\u0027: 12})"},{"line_number":75,"context_line":"        r2 \u003d base.Resource(None, {\u0027name\u0027: \u0027joe\u0027, \u0027age\u0027: 12})"},{"line_number":76,"context_line":"        self.assertTrue(r1 \u003d\u003d r2)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bacf61ea_7d898d6e","line":73,"range":{"start_line":73,"start_character":8,"end_line":73,"end_character":64},"updated":"2016-08-08 03:29:34.000000000","message":"reword these comments to include your change below, or let it as is and add some lines separately to test your change in base.py","commit_id":"573790914b2dc92c942726627cd6ac7427149b14"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"075d322be87a93f4ce8b26e8feeeee53bf6d7656","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        self.assertTrue(r1 \u003d\u003d r2)"},{"line_number":77,"context_line":"        self.assertFalse(r1 !\u003d r2)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        # Two resources with different ID and info: never equal"},{"line_number":80,"context_line":"        r1 \u003d base.Resource(None, {\u0027id\u0027: 1, \u0027name\u0027: \u0027hi\u0027})"},{"line_number":81,"context_line":"        r2 \u003d base.Resource(None, {\u0027id\u0027: 2, \u0027name\u0027: \u0027hello\u0027})"},{"line_number":82,"context_line":"        self.assertNotEqual(r1, r2)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        r1 \u003d base.Resource(None, {\u0027id\u0027: 1})"},{"line_number":85,"context_line":"        self.assertNotEqual(r1, object())"}],"source_content_type":"text/x-python","patch_set":5,"id":"bacf61ea_fdca9d9e","line":82,"range":{"start_line":79,"start_character":0,"end_line":82,"end_character":35},"updated":"2016-08-08 03:29:34.000000000","message":"irrelevant change, pls remove or update.","commit_id":"573790914b2dc92c942726627cd6ac7427149b14"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"b86e7b61b1213ea4173bed158e141bc343e35739","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        # Two resources with same ID: equal if their info is equal"},{"line_number":63,"context_line":"        # The truth of r1\u003d\u003dr2 does not imply that r1!\u003dr2 is false in PY2 and"},{"line_number":64,"context_line":"        # if r1 \u003d\u003d r2, both self.assertEqual(r1, r2) and"},{"line_number":65,"context_line":"        # self.assertNotEqual(r1, r2) return true without defining __ne__."},{"line_number":66,"context_line":"        r1 \u003d base.Resource(None, {\u0027id\u0027: 1, \u0027name\u0027: \u0027hello\u0027})"},{"line_number":67,"context_line":"        r2 \u003d base.Resource(None, {\u0027id\u0027: 1, \u0027name\u0027: \u0027hello\u0027})"},{"line_number":68,"context_line":"        self.assertTrue(r1 \u003d\u003d r2)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_07bee9d3","line":65,"updated":"2016-08-09 13:38:15.000000000","message":"so why not just test them with self.assertEqual and self.assertNotEqual rather than assertTrue/False ?","commit_id":"b52a7aa5e057a7bc01afec5dd1d65bf1dd00d74c"},{"author":{"_account_id":20146,"name":"yuyafei","email":"yu.yafei@foxmail.com","username":"yuyafei"},"change_message_id":"fac0b34d3b7a980fd55856bd187cfcf8bb79f521","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        # Two resources with same ID: equal if their info is equal"},{"line_number":63,"context_line":"        # The truth of r1\u003d\u003dr2 does not imply that r1!\u003dr2 is false in PY2 and"},{"line_number":64,"context_line":"        # if r1 \u003d\u003d r2, both self.assertEqual(r1, r2) and"},{"line_number":65,"context_line":"        # self.assertNotEqual(r1, r2) return true without defining __ne__."},{"line_number":66,"context_line":"        r1 \u003d base.Resource(None, {\u0027id\u0027: 1, \u0027name\u0027: \u0027hello\u0027})"},{"line_number":67,"context_line":"        r2 \u003d base.Resource(None, {\u0027id\u0027: 1, \u0027name\u0027: \u0027hello\u0027})"},{"line_number":68,"context_line":"        self.assertTrue(r1 \u003d\u003d r2)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_d273c47e","line":65,"in_reply_to":"9ad45d7e_07bee9d3","updated":"2016-08-10 07:01:06.000000000","message":"As Dave says:\nWithout the change in base.py, the follow code should all pass.\n    self.assertEqual(r1, r2)\n    self.assertNotEqual(r1, r2)\n\nthe change here is for a way to assert self.assertNotEqual(r1, r2) is false.","commit_id":"b52a7aa5e057a7bc01afec5dd1d65bf1dd00d74c"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"49e22e067ebd9740022009c3769965dea0d4baac","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        r2 \u003d base.Resource(None, {\u0027name\u0027: \u0027joe\u0027, \u0027age\u0027: 12})"},{"line_number":82,"context_line":"        self.assertTrue(r1 \u003d\u003d r2)"},{"line_number":83,"context_line":"        self.assertFalse(r1 !\u003d r2)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        r1 \u003d base.Resource(None, {\u0027id\u0027: 1})"},{"line_number":86,"context_line":"        self.assertNotEqual(r1, object())"},{"line_number":87,"context_line":"        self.assertNotEqual(r1, {\u0027id\u0027: 1})"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_0630d800","line":84,"updated":"2016-08-08 19:15:15.000000000","message":"please write a test that would show that !\u003d returns True. It should end somehow like this:\nself.assertTrue(r1 !\u003d r2).","commit_id":"b52a7aa5e057a7bc01afec5dd1d65bf1dd00d74c"},{"author":{"_account_id":20146,"name":"yuyafei","email":"yu.yafei@foxmail.com","username":"yuyafei"},"change_message_id":"2747baf644d7bccda72274dfafb1d0a071501283","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        r2 \u003d base.Resource(None, {\u0027name\u0027: \u0027joe\u0027, \u0027age\u0027: 12})"},{"line_number":82,"context_line":"        self.assertTrue(r1 \u003d\u003d r2)"},{"line_number":83,"context_line":"        self.assertFalse(r1 !\u003d r2)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        r1 \u003d base.Resource(None, {\u0027id\u0027: 1})"},{"line_number":86,"context_line":"        self.assertNotEqual(r1, object())"},{"line_number":87,"context_line":"        self.assertNotEqual(r1, {\u0027id\u0027: 1})"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_162bd983","line":84,"in_reply_to":"9ad45d7e_0630d800","updated":"2016-08-09 00:39:44.000000000","message":"Hi, Boris.\nYour comments make me confused. If r1\u003d\u003dr2, the \u0027!\u003d\u0027 should return false and I don\u0027t understand why need a test to show that !\u003d returns True.","commit_id":"b52a7aa5e057a7bc01afec5dd1d65bf1dd00d74c"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"f004a2d9b7fadfa3ea3bb3c277126ee77703716b","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        r2 \u003d base.Resource(None, {\u0027name\u0027: \u0027joe\u0027, \u0027age\u0027: 12})"},{"line_number":82,"context_line":"        self.assertTrue(r1 \u003d\u003d r2)"},{"line_number":83,"context_line":"        self.assertFalse(r1 !\u003d r2)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        r1 \u003d base.Resource(None, {\u0027id\u0027: 1})"},{"line_number":86,"context_line":"        self.assertNotEqual(r1, object())"},{"line_number":87,"context_line":"        self.assertNotEqual(r1, {\u0027id\u0027: 1})"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_58357bd8","line":84,"in_reply_to":"9ad45d7e_162bd983","updated":"2016-08-09 02:39:30.000000000","message":"I am kind of agree with Boris, we need a test here to assert r1!\u003dr2 is true since the method __ne__ is defined for that.\n\nBut it always return true without __ne__ is defined, this is not what the bug for and I think it should be covered by code from L58-L60.","commit_id":"b52a7aa5e057a7bc01afec5dd1d65bf1dd00d74c"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"b86e7b61b1213ea4173bed158e141bc343e35739","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        r2 \u003d base.Resource(None, {\u0027name\u0027: \u0027joe\u0027, \u0027age\u0027: 12})"},{"line_number":82,"context_line":"        self.assertTrue(r1 \u003d\u003d r2)"},{"line_number":83,"context_line":"        self.assertFalse(r1 !\u003d r2)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        r1 \u003d base.Resource(None, {\u0027id\u0027: 1})"},{"line_number":86,"context_line":"        self.assertNotEqual(r1, object())"},{"line_number":87,"context_line":"        self.assertNotEqual(r1, {\u0027id\u0027: 1})"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_a74c3d43","line":84,"in_reply_to":"9ad45d7e_58357bd8","updated":"2016-08-09 13:38:15.000000000","message":"++","commit_id":"b52a7aa5e057a7bc01afec5dd1d65bf1dd00d74c"},{"author":{"_account_id":20146,"name":"yuyafei","email":"yu.yafei@foxmail.com","username":"yuyafei"},"change_message_id":"fac0b34d3b7a980fd55856bd187cfcf8bb79f521","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        r2 \u003d base.Resource(None, {\u0027name\u0027: \u0027joe\u0027, \u0027age\u0027: 12})"},{"line_number":82,"context_line":"        self.assertTrue(r1 \u003d\u003d r2)"},{"line_number":83,"context_line":"        self.assertFalse(r1 !\u003d r2)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        r1 \u003d base.Resource(None, {\u0027id\u0027: 1})"},{"line_number":86,"context_line":"        self.assertNotEqual(r1, object())"},{"line_number":87,"context_line":"        self.assertNotEqual(r1, {\u0027id\u0027: 1})"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_32ba20c1","line":84,"in_reply_to":"9ad45d7e_58357bd8","updated":"2016-08-10 07:01:06.000000000","message":"Got it.","commit_id":"b52a7aa5e057a7bc01afec5dd1d65bf1dd00d74c"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"04a6ba1b1726f2ff1936097f6974975a1e37068b","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        self.assertTrue(r1 !\u003d r2)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        # Two resources with same ID: equal if their info is equal"},{"line_number":64,"context_line":"        # The truth of r1\u003d\u003dr2 does not imply that r1!\u003dr2 is false in PY2 and"},{"line_number":65,"context_line":"        # if r1 \u003d\u003d r2, both self.assertEqual(r1, r2) and"},{"line_number":66,"context_line":"        # self.assertNotEqual(r1, r2) return true without defining __ne__."},{"line_number":67,"context_line":"        r1 \u003d base.Resource(None, {\u0027id\u0027: 1, \u0027name\u0027: \u0027hello\u0027})"},{"line_number":68,"context_line":"        r2 \u003d base.Resource(None, {\u0027id\u0027: 1, \u0027name\u0027: \u0027hello\u0027})"},{"line_number":69,"context_line":"        self.assertTrue(r1 \u003d\u003d r2)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_12ea60db","line":66,"range":{"start_line":64,"start_character":72,"end_line":66,"end_character":74},"updated":"2016-08-10 15:02:42.000000000","message":"Sorry, but i dislike this part of the comment. It describes a problem, but doesn\u0027t describe what the end result should look like. It will leave people wondering what this is for.\n\nCould you please rephrase the highlighted part? I think it should sound like \". Test that inequality operator is defined and that comparing equal items returns False\".","commit_id":"f8c1d295582afbbb0fc51841d0cdd1fe1bc3a6ad"},{"author":{"_account_id":20146,"name":"yuyafei","email":"yu.yafei@foxmail.com","username":"yuyafei"},"change_message_id":"e8491dfc57607e7b41cad2b36a034ab6466f8f05","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        self.assertTrue(r1 !\u003d r2)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        # Two resources with same ID: equal if their info is equal"},{"line_number":64,"context_line":"        # The truth of r1\u003d\u003dr2 does not imply that r1!\u003dr2 is false in PY2 and"},{"line_number":65,"context_line":"        # if r1 \u003d\u003d r2, both self.assertEqual(r1, r2) and"},{"line_number":66,"context_line":"        # self.assertNotEqual(r1, r2) return true without defining __ne__."},{"line_number":67,"context_line":"        r1 \u003d base.Resource(None, {\u0027id\u0027: 1, \u0027name\u0027: \u0027hello\u0027})"},{"line_number":68,"context_line":"        r2 \u003d base.Resource(None, {\u0027id\u0027: 1, \u0027name\u0027: \u0027hello\u0027})"},{"line_number":69,"context_line":"        self.assertTrue(r1 \u003d\u003d r2)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_06ae8b80","line":66,"range":{"start_line":64,"start_character":72,"end_line":66,"end_character":74},"in_reply_to":"9ad45d7e_12ea60db","updated":"2016-08-11 01:44:47.000000000","message":"Done","commit_id":"f8c1d295582afbbb0fc51841d0cdd1fe1bc3a6ad"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"04a6ba1b1726f2ff1936097f6974975a1e37068b","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        self.assertTrue(r1 !\u003d r2)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        # Two resources with no ID: equal if their info is equal"},{"line_number":79,"context_line":"        # The truth of r1\u003d\u003dr2 does not imply that r1!\u003dr2 is false in PY2 and"},{"line_number":80,"context_line":"        # if r1 \u003d\u003d r2, both self.assertEqual(r1, r2) and"},{"line_number":81,"context_line":"        # self.assertNotEqual(r1, r2) return true without defining __ne__."},{"line_number":82,"context_line":"        r1 \u003d base.Resource(None, {\u0027name\u0027: \u0027joe\u0027, \u0027age\u0027: 12})"},{"line_number":83,"context_line":"        r2 \u003d base.Resource(None, {\u0027name\u0027: \u0027joe\u0027, \u0027age\u0027: 12})"},{"line_number":84,"context_line":"        self.assertTrue(r1 \u003d\u003d r2)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_72c11c54","line":81,"range":{"start_line":79,"start_character":72,"end_line":81,"end_character":74},"updated":"2016-08-10 15:02:42.000000000","message":"same here","commit_id":"f8c1d295582afbbb0fc51841d0cdd1fe1bc3a6ad"},{"author":{"_account_id":20146,"name":"yuyafei","email":"yu.yafei@foxmail.com","username":"yuyafei"},"change_message_id":"e8491dfc57607e7b41cad2b36a034ab6466f8f05","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        self.assertTrue(r1 !\u003d r2)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        # Two resources with no ID: equal if their info is equal"},{"line_number":79,"context_line":"        # The truth of r1\u003d\u003dr2 does not imply that r1!\u003dr2 is false in PY2 and"},{"line_number":80,"context_line":"        # if r1 \u003d\u003d r2, both self.assertEqual(r1, r2) and"},{"line_number":81,"context_line":"        # self.assertNotEqual(r1, r2) return true without defining __ne__."},{"line_number":82,"context_line":"        r1 \u003d base.Resource(None, {\u0027name\u0027: \u0027joe\u0027, \u0027age\u0027: 12})"},{"line_number":83,"context_line":"        r2 \u003d base.Resource(None, {\u0027name\u0027: \u0027joe\u0027, \u0027age\u0027: 12})"},{"line_number":84,"context_line":"        self.assertTrue(r1 \u003d\u003d r2)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_e6b257e4","line":81,"range":{"start_line":79,"start_character":72,"end_line":81,"end_character":74},"in_reply_to":"9ad45d7e_72c11c54","updated":"2016-08-11 01:44:47.000000000","message":"Done","commit_id":"f8c1d295582afbbb0fc51841d0cdd1fe1bc3a6ad"}]}
