)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2cbfa4dd14a67ab294f8517d561209fefaf462f9","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"is prettier than:"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"if image_meta.obj_attr_is_set(\u0027disk_format\u0027):"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"--"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7a2fa921_78902bed","line":22,"updated":"2015-10-05 22:20:12.000000000","message":"why not convert to use modern attribute access instead (like the docstring for VersionedObjectDictCompat says to do)?\n\nthis would be\n\n if hasattr(image_meta, \u0027disk_format\u0027)","commit_id":"7b67b8540bd136f6758dc7aa05ca0b684114b8c5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"636c227ab5c5c132843fecdb3edb30bd0e136799","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"is prettier than:"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"if image_meta.obj_attr_is_set(\u0027disk_format\u0027):"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"--"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7a2fa921_1388f821","line":22,"in_reply_to":"7a2fa921_78902bed","updated":"2015-10-05 22:38:11.000000000","message":"No, this is not the same at all. The hasattr() test will always succeed because disk_format is an @property on the object. To tell if it\u0027s loaded or not you need to do what matt says here (or use __contains__ once we move it).","commit_id":"7b67b8540bd136f6758dc7aa05ca0b684114b8c5"}],"oslo_versionedobjects/base.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"db0eab15b27652b042b3c098276dc36c7becf1b1","unresolved":false,"context_lines":[{"line_number":306,"context_line":"        try:"},{"line_number":307,"context_line":"            return self.obj_attr_is_set(name)"},{"line_number":308,"context_line":"        except AttributeError:"},{"line_number":309,"context_line":"            return False"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    @classmethod"},{"line_number":312,"context_line":"    def obj_name(cls):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a1a9d01_7edb001c","line":309,"updated":"2015-10-02 20:55:14.000000000","message":"So I was just thinking: you can\u0027t use the mixin without the base object, so let\u0027s just move it instead of copy. Any reason not to?\n\nMaybe this was your point in IRC, and if so, sorry :)","commit_id":"4fab21c84bf49e7f68912c361b15880f787a52f2"}]}
