)]}'
{"keystone/notifications.py":[{"author":{"_account_id":16523,"name":"ZhangLei","display_name":"ZhangLei","email":"zhang.lei@99cloud.net","username":"zhang.lei"},"change_message_id":"3ee77af1cf30f788ac633873b46a5c3c48ce9831","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        for event, resource_types in self.event_callbacks.items():"},{"line_number":337,"context_line":"            for resource_type, callbacks in resource_types.items():"},{"line_number":338,"context_line":"                # Make sure we register the provider for each event it"},{"line_number":339,"context_line":"                # cares to call back."},{"line_number":340,"context_line":"                if not hasattr(callbacks, \u0027__iter__\u0027):"},{"line_number":341,"context_line":"                    # ensure the callback information is a list"},{"line_number":342,"context_line":"                    # allowing multiple callbacks to exist"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_ffce5b82","line":339,"updated":"2015-08-04 03:12:13.000000000","message":"remove 338 and 339","commit_id":"45033b6fca53f936990e0dbb4c50dd253cb18867"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"44ab050ffc01cbc42b9221518cf97f1a48a9d37c","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        for event, resource_types in self.event_callbacks.items():"},{"line_number":337,"context_line":"            for resource_type, callbacks in resource_types.items():"},{"line_number":338,"context_line":"                # Make sure we register the provider for each event it"},{"line_number":339,"context_line":"                # cares to call back."},{"line_number":340,"context_line":"                if not hasattr(callbacks, \u0027__iter__\u0027):"},{"line_number":341,"context_line":"                    # ensure the callback information is a list"},{"line_number":342,"context_line":"                    # allowing multiple callbacks to exist"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_530ad127","line":339,"in_reply_to":"1a4dcd0f_345ce24a","updated":"2015-08-04 13:08:21.000000000","message":"338-339 weren\u0027t referring to the lines that were removed.","commit_id":"45033b6fca53f936990e0dbb4c50dd253cb18867"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"064648e3c344ec894a8b37a6de39e7e8768e7230","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        for event, resource_types in self.event_callbacks.items():"},{"line_number":337,"context_line":"            for resource_type, callbacks in resource_types.items():"},{"line_number":338,"context_line":"                # Make sure we register the provider for each event it"},{"line_number":339,"context_line":"                # cares to call back."},{"line_number":340,"context_line":"                if not hasattr(callbacks, \u0027__iter__\u0027):"},{"line_number":341,"context_line":"                    # ensure the callback information is a list"},{"line_number":342,"context_line":"                    # allowing multiple callbacks to exist"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_cca04da2","line":339,"in_reply_to":"1a4dcd0f_530ad127","updated":"2015-08-05 09:17:04.000000000","message":"Brant, I think these comment is for the following code code snippet,\n\ncallbacks \u003d self.event_callbacks[event][resource_type]\nif not callbacks:\n    continue\n\nBut now, these check either been move up to L337 or just removed in this patch, they will be the orphan comments if we leave it here.\n\nI hope these comment could be removed or put them in another place where they should go.","commit_id":"45033b6fca53f936990e0dbb4c50dd253cb18867"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"921e75334715393a6ac0419fe923f9ddba2dc1b6","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        for event, resource_types in self.event_callbacks.items():"},{"line_number":337,"context_line":"            for resource_type, callbacks in resource_types.items():"},{"line_number":338,"context_line":"                # Make sure we register the provider for each event it"},{"line_number":339,"context_line":"                # cares to call back."},{"line_number":340,"context_line":"                if not hasattr(callbacks, \u0027__iter__\u0027):"},{"line_number":341,"context_line":"                    # ensure the callback information is a list"},{"line_number":342,"context_line":"                    # allowing multiple callbacks to exist"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_66c82d23","line":339,"in_reply_to":"1a4dcd0f_cca04da2","updated":"2015-08-05 12:26:50.000000000","message":"The comment is about registering the provider, which happens at line 344.\n\nThe 3 lines that were removed were getting the callbacks for the resource type and then aborting if there weren\u0027t any callbacks.","commit_id":"45033b6fca53f936990e0dbb4c50dd253cb18867"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"aa41169c3aae2d239afc6d9e355fe3c36f4cfa8d","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        for event, resource_types in self.event_callbacks.items():"},{"line_number":337,"context_line":"            for resource_type, callbacks in resource_types.items():"},{"line_number":338,"context_line":"                # Make sure we register the provider for each event it"},{"line_number":339,"context_line":"                # cares to call back."},{"line_number":340,"context_line":"                if not hasattr(callbacks, \u0027__iter__\u0027):"},{"line_number":341,"context_line":"                    # ensure the callback information is a list"},{"line_number":342,"context_line":"                    # allowing multiple callbacks to exist"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_345ce24a","line":339,"in_reply_to":"1a4dcd0f_ffce5b82","updated":"2015-08-04 07:49:29.000000000","message":"doesn\u0027t this comment refer to the whole block and is hence still valid?","commit_id":"45033b6fca53f936990e0dbb4c50dd253cb18867"}]}
