)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1eac8105395f860b739a2c0058d5128575aeb080","unresolved":false,"context_lines":[{"line_number":20,"context_line":"may drop the dictionary API from Nova objects, but not the"},{"line_number":21,"context_line":"VersionedObjectDictCompat class."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"This change adds also Python 3 support. On Python 3, MutableMapping"},{"line_number":24,"context_line":"defines correctly items() and keys() methods: return iterators, not"},{"line_number":25,"context_line":"list."},{"line_number":26,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9a0c5dc1_c405c6c2","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":38},"updated":"2015-05-13 00:49:20.000000000","message":"Can you remove this please? We already run python3 tests on every commit.","commit_id":"9d83e351755a90b8e0967d84491c468f4978255a"}],"oslo_versionedobjects/base.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"4a55465765fdb6552c733a69da6ea67b337dcde2","unresolved":false,"context_lines":[{"line_number":648,"context_line":"    \"\"\""},{"line_number":649,"context_line":""},{"line_number":650,"context_line":"    # dictish syntactic sugar"},{"line_number":651,"context_line":"    def iteritems(self):"},{"line_number":652,"context_line":"        \"\"\"For backwards-compatibility with dict-based objects."},{"line_number":653,"context_line":""},{"line_number":654,"context_line":"        NOTE(danms): May be removed in the future."}],"source_content_type":"text/x-python","patch_set":2,"id":"9a0c5dc1_c926ffb9","side":"PARENT","line":651,"updated":"2015-05-12 23:50:39.000000000","message":"I don\u0027t think you should remove this. Yes, a python3 puritan would NEVER assume the presence of an iteritems() on something that purported to be dict-like. However, mortal humans may have, and thus removing it is not okay, IMHO.","commit_id":"f15cf79dad11f4426ce51cb19cc6d8b63a944d0e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"4a55465765fdb6552c733a69da6ea67b337dcde2","unresolved":false,"context_lines":[{"line_number":659,"context_line":"        items \u003d 0"},{"line_number":660,"context_line":"        for name in self:"},{"line_number":661,"context_line":"            items +\u003d 1"},{"line_number":662,"context_line":"        return items"},{"line_number":663,"context_line":""},{"line_number":664,"context_line":"    def __getitem__(self, name):"},{"line_number":665,"context_line":"        return getattr(self, name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a0c5dc1_a952ab11","line":662,"updated":"2015-05-12 23:50:39.000000000","message":"How about just:\n\n return len(self.fields)\n\n?","commit_id":"79b2f3064df5136579e39e53cbc60d12a3c0a399"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"4a55465765fdb6552c733a69da6ea67b337dcde2","unresolved":false,"context_lines":[{"line_number":668,"context_line":"        setattr(self, name, value)"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"    def __delitem__(self, name):"},{"line_number":671,"context_line":"        delattr(self, name)"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"    def __contains__(self, name):"},{"line_number":674,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a0c5dc1_3e238fbf","line":671,"updated":"2015-05-12 23:50:39.000000000","message":"This won\u0027t work because VersionedObject doesn\u0027t support deleting attributes. Attributes are actually properties, so they must be handled properly.\n\nAlso, there is no test for this.","commit_id":"79b2f3064df5136579e39e53cbc60d12a3c0a399"}]}
