)]}'
{"smaug/services/protection/resource_flow.py":[{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"7bd08f0b6eb66f5b30513a6e6252f224728fc759","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            return ret"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class Barrier(object):"},{"line_number":61,"context_line":"    def __init__(self, interval):"},{"line_number":62,"context_line":"        super(Barrier, self).__init__()"},{"line_number":63,"context_line":"        self._event \u003d Event()"}],"source_content_type":"text/x-python","patch_set":7,"id":"dab17558_002fab88","line":60,"updated":"2016-05-16 07:02:37.000000000","message":"is Barrier to be implemented by any concrete class?\nIf not, I don\u0027t get what Barrier does in each fixed interval call. It looks to me that the Barrier should be open to various implementations of looping calls.","commit_id":"8ccf47419932ad80d47c46bd62e92c71b5198dfb"},{"author":{"_account_id":18266,"name":"zengchen","email":"chenzeng2@huawei.com","username":"zengchen"},"change_message_id":"022007f7dc1c65033423e6e7d13993573d6344a2","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        resource \u003d node.value"},{"line_number":157,"context_line":"        self.current_resource \u003d resource"},{"line_number":158,"context_line":"        if already_visited:"},{"line_number":159,"context_line":"            self.task_stack.push(self.node_tasks[resource.id])"},{"line_number":160,"context_line":"            return"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        protection_plugin \u003d self.plugins[resource.type]"}],"source_content_type":"text/x-python","patch_set":7,"id":"dab17558_45bea5ae","line":159,"range":{"start_line":159,"start_character":28,"end_line":159,"end_character":32},"updated":"2016-05-17 07:56:15.000000000","message":"list does not have method of push.","commit_id":"8ccf47419932ad80d47c46bd62e92c71b5198dfb"},{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"7bd08f0b6eb66f5b30513a6e6252f224728fc759","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    resource_flow \u003d workflow_engine.build_flow(\u0027ResourceFlow\u0027, \u0027linear\u0027)"},{"line_number":186,"context_line":"    begin \u003d workflow_engine.create_task("},{"line_number":187,"context_line":"        barrier_start,"},{"line_number":188,"context_line":"        provides\u003d\u0027barrier\u0027,"},{"line_number":189,"context_line":"    )"},{"line_number":190,"context_line":"    end \u003d workflow_engine.create_task("},{"line_number":191,"context_line":"        barrier_stop,"}],"source_content_type":"text/x-python","patch_set":7,"id":"dab17558_2d6aa881","line":188,"updated":"2016-05-16 07:02:37.000000000","message":"should provides be an array as well?","commit_id":"8ccf47419932ad80d47c46bd62e92c71b5198dfb"},{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"6c43658055248ccc00360f54de26df147e685054","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def _create_activity_task(self, plugin, resource, activity_type):"},{"line_number":125,"context_line":"        assert(activity_type in ACTIVITY_TYPES)"},{"line_number":126,"context_line":"        method_name \u003d \u0027activity_{}_{}\u0027.format(self.operation_type,"},{"line_number":127,"context_line":"                                              activity_type)"},{"line_number":128,"context_line":"        method \u003d None"},{"line_number":129,"context_line":"        if hasattr(plugin, method_name):"}],"source_content_type":"text/x-python","patch_set":10,"id":"bab6814e_8ba7be4e","line":126,"updated":"2016-05-18 08:41:36.000000000","message":"We define the method name with a fixed format. We should claim it in the design doc.","commit_id":"7bed23ebf4e074321918e9e30d5a443743880400"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"bae8ba0f963b8c8eae8bb8fbc70cfc0cc3f94a53","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def _create_activity_task(self, plugin, resource, activity_type):"},{"line_number":125,"context_line":"        assert(activity_type in ACTIVITY_TYPES)"},{"line_number":126,"context_line":"        method_name \u003d \u0027activity_{}_{}\u0027.format(self.operation_type,"},{"line_number":127,"context_line":"                                              activity_type)"},{"line_number":128,"context_line":"        method \u003d None"},{"line_number":129,"context_line":"        if hasattr(plugin, method_name):"}],"source_content_type":"text/x-python","patch_set":10,"id":"bab6814e_e2e148d2","line":126,"in_reply_to":"bab6814e_8ba7be4e","updated":"2016-05-18 09:28:55.000000000","message":"Correct, but it has nothing to do with this patch.","commit_id":"7bed23ebf4e074321918e9e30d5a443743880400"}]}
