)]}'
{"rally/api.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e89135de2cee703e2607524c2522d12d362fceb5","unresolved":false,"context_lines":[{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    TASK_RESULT_SCHEMA \u003d objects.task.TASK_RESULT_SCHEMA"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    @staticmethod"},{"line_number":183,"context_line":"    def _list(**filters):"},{"line_number":184,"context_line":"        return objects.Task.list(**filters)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    @classmethod"},{"line_number":187,"context_line":"    def list(cls, **filters):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_069c1d68","line":184,"range":{"start_line":182,"start_character":4,"end_line":184,"end_character":43},"updated":"2017-02-13 17:17:15.000000000","message":"it is not used anywhere(except `list` method), so I do not see any reasons for having separate class.","commit_id":"60ba6c11a2f9d4b8001f0ed43494cd2d47f6a672"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"6f535a7be8d7d6d8d536f805abc81030505189b1","unresolved":false,"context_lines":[{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    TASK_RESULT_SCHEMA \u003d objects.task.TASK_RESULT_SCHEMA"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    @staticmethod"},{"line_number":183,"context_line":"    def _list(**filters):"},{"line_number":184,"context_line":"        return objects.Task.list(**filters)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    @classmethod"},{"line_number":187,"context_line":"    def list(cls, **filters):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_5c21889e","line":184,"range":{"start_line":182,"start_character":4,"end_line":184,"end_character":43},"in_reply_to":"fa31d9ce_069c1d68","updated":"2017-02-13 17:41:26.000000000","message":"list() would use this function in taskcommand. But I think it is wrong way.So I would fix it too.","commit_id":"60ba6c11a2f9d4b8001f0ed43494cd2d47f6a672"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e89135de2cee703e2607524c2522d12d362fceb5","unresolved":false,"context_lines":[{"line_number":273,"context_line":"                            % \", \".join(real_missing))"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        render_template \u003d env.from_string(task_template).render(**kwargs)"},{"line_number":276,"context_line":"        return {\"render_template\": render_template}"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    @classmethod"},{"line_number":279,"context_line":"    def create_template_functions(cls):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_e6ae2984","line":276,"range":{"start_line":276,"start_character":15,"end_line":276,"end_character":51},"updated":"2017-02-13 17:17:15.000000000","message":"let\u0027s do not create dicts for raw text. I think we will handle it in special decorator which will process serialization/desirialization","commit_id":"60ba6c11a2f9d4b8001f0ed43494cd2d47f6a672"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"6f535a7be8d7d6d8d536f805abc81030505189b1","unresolved":false,"context_lines":[{"line_number":273,"context_line":"                            % \", \".join(real_missing))"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        render_template \u003d env.from_string(task_template).render(**kwargs)"},{"line_number":276,"context_line":"        return {\"render_template\": render_template}"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    @classmethod"},{"line_number":279,"context_line":"    def create_template_functions(cls):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_1c9c70bf","line":276,"range":{"start_line":276,"start_character":15,"end_line":276,"end_character":51},"in_reply_to":"fa31d9ce_e6ae2984","updated":"2017-02-13 17:41:26.000000000","message":"String could be serialied easily.But I think we should return the unified dict previously.:(","commit_id":"60ba6c11a2f9d4b8001f0ed43494cd2d47f6a672"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e89135de2cee703e2607524c2522d12d362fceb5","unresolved":false,"context_lines":[{"line_number":294,"context_line":"        return {\"min\": template_min, \"max\": template_max,"},{"line_number":295,"context_line":"                \"ceil\": template_ceil, \"round\": template_round}"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    @staticmethod"},{"line_number":298,"context_line":"    def _create(deployment, tag):"},{"line_number":299,"context_line":"        \"\"\"Create a task without starting it."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        Task is a list of benchmarks that will be called one by one, results of"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_46ba95c1","line":298,"range":{"start_line":297,"start_character":4,"end_line":298,"end_character":15},"updated":"2017-02-13 17:17:15.000000000","message":"same here","commit_id":"60ba6c11a2f9d4b8001f0ed43494cd2d47f6a672"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"6f535a7be8d7d6d8d536f805abc81030505189b1","unresolved":false,"context_lines":[{"line_number":294,"context_line":"        return {\"min\": template_min, \"max\": template_max,"},{"line_number":295,"context_line":"                \"ceil\": template_ceil, \"round\": template_round}"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    @staticmethod"},{"line_number":298,"context_line":"    def _create(deployment, tag):"},{"line_number":299,"context_line":"        \"\"\"Create a task without starting it."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        Task is a list of benchmarks that will be called one by one, results of"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_dc91f89a","line":298,"range":{"start_line":297,"start_character":4,"end_line":298,"end_character":15},"in_reply_to":"fa31d9ce_46ba95c1","updated":"2017-02-13 17:41:26.000000000","message":"Ok, I will fix it.","commit_id":"60ba6c11a2f9d4b8001f0ed43494cd2d47f6a672"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"3a53062935e54fa90591fbda02f5506a09ef7be0","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        return [task.to_dict() for task in objects.Task.list(**filters)]"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    @staticmethod"},{"line_number":187,"context_line":"    def _get(task_id):"},{"line_number":188,"context_line":"        return objects.Task.get(task_id)"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    @classmethod"},{"line_number":191,"context_line":"    def get(cls, task_id):"}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_a5956241","line":188,"range":{"start_line":187,"start_character":4,"end_line":188,"end_character":40},"updated":"2017-02-21 13:15:48.000000000","message":"Looks redundant.","commit_id":"813a026a46689ddae5b33609b9d3ac4ee8312ba3"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"04de5b829f42406f6eaea3a7ca5be50431b27420","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        return [task.to_dict() for task in objects.Task.list(**filters)]"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    @staticmethod"},{"line_number":187,"context_line":"    def _get(task_id):"},{"line_number":188,"context_line":"        return objects.Task.get(task_id)"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    @classmethod"},{"line_number":191,"context_line":"    def get(cls, task_id):"}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_8ea4d2a6","line":188,"range":{"start_line":187,"start_character":4,"end_line":188,"end_character":40},"in_reply_to":"da36d5c6_a5956241","updated":"2017-02-21 15:00:18.000000000","message":"If all old get() would be replaced by new get(), I would delete it.","commit_id":"813a026a46689ddae5b33609b9d3ac4ee8312ba3"},{"author":{"_account_id":23094,"name":"Staroverov Anton","email":"avstaroverov@gmail.com","username":"astaroverov"},"change_message_id":"e2c9ce13f1d10ae3ce412a436555b4e542947e50","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    @staticmethod"},{"line_number":183,"context_line":"    def list(**filters):"},{"line_number":184,"context_line":"        return [task.to_dict() for task in objects.Task.list(**filters)]"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    @staticmethod"},{"line_number":187,"context_line":"    def _get(task_id):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a30ddce_fcb2bf04","line":184,"updated":"2017-03-13 14:35:09.000000000","message":"objects.Task.list(...) returns list already. Do we need to repack it once again?","commit_id":"f2ac665c300669a246a3f85d711d7c9bee96e5bb"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"bbbbc69c04d45b3ef480d4f794376e0ef8a04ff4","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    @staticmethod"},{"line_number":183,"context_line":"    def list(**filters):"},{"line_number":184,"context_line":"        return [task.to_dict() for task in objects.Task.list(**filters)]"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    @staticmethod"},{"line_number":187,"context_line":"    def _get(task_id):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a30ddce_477a18be","line":184,"in_reply_to":"9a30ddce_fcb2bf04","updated":"2017-03-13 14:58:19.000000000","message":"yes. objects.Tsk.list() return a list of instance, we should a serialzed list of task.","commit_id":"f2ac665c300669a246a3f85d711d7c9bee96e5bb"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"6bd4adc0f7453fd45f245a4ba2508718ae6d00c3","unresolved":false,"context_lines":[{"line_number":245,"context_line":"            task[\"results\"] \u003d objects.Task.extend_results(task[\"results\"])"},{"line_number":246,"context_line":"        return task"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    # TODO(andreykurilin): move it to some kind of utils"},{"line_number":249,"context_line":"    @classmethod"},{"line_number":250,"context_line":"    def render_template(cls, task_template, template_dir\u003d\"./\", **kwargs):"},{"line_number":251,"context_line":"        \"\"\"Render jinja2 task template to Rally input task."}],"source_content_type":"text/x-python","patch_set":12,"id":"bff0334d_d8c38688","line":248,"range":{"start_line":248,"start_character":4,"end_line":248,"end_character":56},"updated":"2017-04-11 01:51:01.000000000","message":"np","commit_id":"636fc0d181e9688506778dcb8d1145b4a0681449"}],"rally/cli/commands/task.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e89135de2cee703e2607524c2522d12d362fceb5","unresolved":false,"context_lines":[{"line_number":236,"context_line":"                                     for it fails"},{"line_number":237,"context_line":"        \"\"\""},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        task_instance \u003d api.task._create(deployment, tag)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        try:"},{"line_number":242,"context_line":"            task_instance \u003d api.task.create(deployment, tag)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"            print(\"Running Rally version\", version.version_string())"},{"line_number":245,"context_line":"            input_task \u003d self._load_and_validate_task("}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_a6cb5152","line":242,"range":{"start_line":239,"start_character":8,"end_line":242,"end_character":60},"updated":"2017-02-13 17:17:15.000000000","message":"you have two calls:)","commit_id":"60ba6c11a2f9d4b8001f0ed43494cd2d47f6a672"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e89135de2cee703e2607524c2522d12d362fceb5","unresolved":false,"context_lines":[{"line_number":302,"context_line":"        Returns current status of task"},{"line_number":303,"context_line":"        \"\"\""},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"        task \u003d api.task._get(task_id)"},{"line_number":306,"context_line":"        print(_(\"Task %(task_id)s: %(status)s\")"},{"line_number":307,"context_line":"              % {\"task_id\": task_id, \"status\": task[\"status\"]})"},{"line_number":308,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_467d35e6","line":305,"range":{"start_line":305,"start_character":24,"end_line":305,"end_character":28},"updated":"2017-02-13 17:17:15.000000000","message":"everything should be ok without changing anything. Also, CLI layer should not call private methods of API(it relates to big part of changes in this file), so we need to adapt this module to work with task object like with dictionary instead of object - it will be the unified way for communicating via rest or directly.","commit_id":"60ba6c11a2f9d4b8001f0ed43494cd2d47f6a672"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"6f535a7be8d7d6d8d536f805abc81030505189b1","unresolved":false,"context_lines":[{"line_number":302,"context_line":"        Returns current status of task"},{"line_number":303,"context_line":"        \"\"\""},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"        task \u003d api.task._get(task_id)"},{"line_number":306,"context_line":"        print(_(\"Task %(task_id)s: %(status)s\")"},{"line_number":307,"context_line":"              % {\"task_id\": task_id, \"status\": task[\"status\"]})"},{"line_number":308,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_7c0d6c36","line":305,"range":{"start_line":305,"start_character":24,"end_line":305,"end_character":28},"in_reply_to":"fa31d9ce_467d35e6","updated":"2017-02-13 17:41:26.000000000","message":"Copy that, I would fix it.","commit_id":"60ba6c11a2f9d4b8001f0ed43494cd2d47f6a672"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"3a53062935e54fa90591fbda02f5506a09ef7be0","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        \"\"\""},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        try:"},{"line_number":239,"context_line":"            task_instance \u003d api.task.create(deployment, tag)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"            print(\"Running Rally version\", version.version_string())"},{"line_number":242,"context_line":"            input_task \u003d self._load_and_validate_task("}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_3d27a265","line":239,"range":{"start_line":239,"start_character":12,"end_line":239,"end_character":25},"updated":"2017-02-21 13:15:48.000000000","message":"We cannot get task instance through RaaS API, so we need to refactor a lot of task CLI methods.\n\nI suggest using task_uuid for validate/start methods and remove all task_instance.set_failed calls. After that, it is no sense to create task before loading of YAML file, a task should be created only if YAML file is loaded without errors.","commit_id":"813a026a46689ddae5b33609b9d3ac4ee8312ba3"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"9dc2f3c48f40f58f4aee4aef8a4529f36365b10a","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        \"\"\""},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        try:"},{"line_number":239,"context_line":"            task_instance \u003d api.task.create(deployment, tag)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"            print(\"Running Rally version\", version.version_string())"},{"line_number":242,"context_line":"            input_task \u003d self._load_and_validate_task("}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_9f570225","line":239,"range":{"start_line":239,"start_character":12,"end_line":239,"end_character":25},"in_reply_to":"da36d5c6_297da0e7","updated":"2017-02-26 14:28:38.000000000","message":"@Anton, I have finished it, pls review my patch again:)","commit_id":"813a026a46689ddae5b33609b9d3ac4ee8312ba3"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"04de5b829f42406f6eaea3a7ca5be50431b27420","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        \"\"\""},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        try:"},{"line_number":239,"context_line":"            task_instance \u003d api.task.create(deployment, tag)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"            print(\"Running Rally version\", version.version_string())"},{"line_number":242,"context_line":"            input_task \u003d self._load_and_validate_task("}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_297da0e7","line":239,"range":{"start_line":239,"start_character":12,"end_line":239,"end_character":25},"in_reply_to":"da36d5c6_3d27a265","updated":"2017-02-21 15:00:18.000000000","message":"I agree with you. We can get task instance of dict, but we can not call any method of dict. In first stage, so we need change the get function. And In second stage, We should adapt your idea and remove all instance method:)","commit_id":"813a026a46689ddae5b33609b9d3ac4ee8312ba3"}],"rally/common/db/sqlalchemy/api.py":[{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"3a53062935e54fa90591fbda02f5506a09ef7be0","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                    \"args\": workload.args,"},{"line_number":266,"context_line":"                    \"runner\": workload.runner,"},{"line_number":267,"context_line":"                    \"context\": workload.context,"},{"line_number":268,"context_line":"                    \"sla\": workload.get(\"sla\", None),"},{"line_number":269,"context_line":"                    \"hooks\": [r[\"config\"] for r in workload.hooks],"},{"line_number":270,"context_line":"                }"},{"line_number":271,"context_line":"            },"},{"line_number":272,"context_line":"            \"data\": {"},{"line_number":273,"context_line":"                \"raw\": raw_data,"},{"line_number":274,"context_line":"                \"load_duration\": workload.load_duration,"},{"line_number":275,"context_line":"                \"full_duration\": workload.full_duration,"},{"line_number":276,"context_line":"                \"sla\": workload.sla_results.get(\"sla\", None),"},{"line_number":277,"context_line":"                \"hooks\": workload.hooks"},{"line_number":278,"context_line":"            }"},{"line_number":279,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_450ae6d3","line":276,"range":{"start_line":268,"start_character":36,"end_line":276,"end_character":61},"updated":"2017-02-21 13:15:48.000000000","message":"Why do we need this changes?","commit_id":"813a026a46689ddae5b33609b9d3ac4ee8312ba3"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"04de5b829f42406f6eaea3a7ca5be50431b27420","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                    \"args\": workload.args,"},{"line_number":266,"context_line":"                    \"runner\": workload.runner,"},{"line_number":267,"context_line":"                    \"context\": workload.context,"},{"line_number":268,"context_line":"                    \"sla\": workload.get(\"sla\", None),"},{"line_number":269,"context_line":"                    \"hooks\": [r[\"config\"] for r in workload.hooks],"},{"line_number":270,"context_line":"                }"},{"line_number":271,"context_line":"            },"},{"line_number":272,"context_line":"            \"data\": {"},{"line_number":273,"context_line":"                \"raw\": raw_data,"},{"line_number":274,"context_line":"                \"load_duration\": workload.load_duration,"},{"line_number":275,"context_line":"                \"full_duration\": workload.full_duration,"},{"line_number":276,"context_line":"                \"sla\": workload.sla_results.get(\"sla\", None),"},{"line_number":277,"context_line":"                \"hooks\": workload.hooks"},{"line_number":278,"context_line":"            }"},{"line_number":279,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_4e59fafd","line":276,"range":{"start_line":268,"start_character":36,"end_line":276,"end_character":61},"in_reply_to":"da36d5c6_450ae6d3","updated":"2017-02-21 15:00:18.000000000","message":"In cli of task, api.task.get() need this info.\nhttps://github.com/openstack/rally/blob/master/rally/cli/commands/task.py#L479-L486","commit_id":"813a026a46689ddae5b33609b9d3ac4ee8312ba3"}],"rally/common/objects/task.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e89135de2cee703e2607524c2522d12d362fceb5","unresolved":false,"context_lines":[{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    def to_dict(self):"},{"line_number":353,"context_line":"        db_task \u003d self.task"},{"line_number":354,"context_line":"        deployment \u003d db.deployment_get(self.task[\"deployment_uuid\"])"},{"line_number":355,"context_line":"        db_task[\"deployment_name\"] \u003d deployment[\"name\"]"},{"line_number":356,"context_line":"        db_task[\"id\"] \u003d deployment[\"id\"]"},{"line_number":357,"context_line":"        db_task[\"uuid\"] \u003d deployment[\"uuid\"]"},{"line_number":358,"context_line":"        db_task[\"deployment_uuid\"] \u003d deployment[\"deployment_uuid\"]"},{"line_number":359,"context_line":"        db_task[\"status\"] \u003d deployment[\"status\"]"},{"line_number":360,"context_line":"        return db_task"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_269681f0","line":359,"range":{"start_line":354,"start_character":0,"end_line":359,"end_character":48},"updated":"2017-02-13 17:17:15.000000000","message":"this change looks very strange","commit_id":"60ba6c11a2f9d4b8001f0ed43494cd2d47f6a672"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"6f535a7be8d7d6d8d536f805abc81030505189b1","unresolved":false,"context_lines":[{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    def to_dict(self):"},{"line_number":353,"context_line":"        db_task \u003d self.task"},{"line_number":354,"context_line":"        deployment \u003d db.deployment_get(self.task[\"deployment_uuid\"])"},{"line_number":355,"context_line":"        db_task[\"deployment_name\"] \u003d deployment[\"name\"]"},{"line_number":356,"context_line":"        db_task[\"id\"] \u003d deployment[\"id\"]"},{"line_number":357,"context_line":"        db_task[\"uuid\"] \u003d deployment[\"uuid\"]"},{"line_number":358,"context_line":"        db_task[\"deployment_uuid\"] \u003d deployment[\"deployment_uuid\"]"},{"line_number":359,"context_line":"        db_task[\"status\"] \u003d deployment[\"status\"]"},{"line_number":360,"context_line":"        return db_task"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_f98faec9","line":359,"range":{"start_line":354,"start_character":0,"end_line":359,"end_character":48},"in_reply_to":"fa31d9ce_269681f0","updated":"2017-02-13 17:41:26.000000000","message":"Just add property what we need. And I would adjust it.","commit_id":"60ba6c11a2f9d4b8001f0ed43494cd2d47f6a672"},{"author":{"_account_id":23094,"name":"Staroverov Anton","email":"avstaroverov@gmail.com","username":"astaroverov"},"change_message_id":"41b8ae1f14640804791caeeee3d6c0b5f07b0675","unresolved":false,"context_lines":[{"line_number":349,"context_line":"    def __getitem__(self, key):"},{"line_number":350,"context_line":"        return self.task[key]"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    def to_dict(self):"},{"line_number":353,"context_line":"        db_task \u003d self.task"},{"line_number":354,"context_line":"        deployment_name \u003d db.deployment_get("},{"line_number":355,"context_line":"            self.task[\"deployment_uuid\"])[\"name\"]"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa31d9ce_e8671de8","line":352,"updated":"2017-02-17 09:35:26.000000000","message":"Well, it\u0027s a dict, but not a JSON string. As I understand, API functions should return JSON strings","commit_id":"813a026a46689ddae5b33609b9d3ac4ee8312ba3"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"ae2b221e1810da9827c0ead1ca29effd558529a8","unresolved":false,"context_lines":[{"line_number":349,"context_line":"    def __getitem__(self, key):"},{"line_number":350,"context_line":"        return self.task[key]"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    def to_dict(self):"},{"line_number":353,"context_line":"        db_task \u003d self.task"},{"line_number":354,"context_line":"        deployment_name \u003d db.deployment_get("},{"line_number":355,"context_line":"            self.task[\"deployment_uuid\"])[\"name\"]"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa31d9ce_fcb98eed","line":352,"in_reply_to":"fa31d9ce_e8671de8","updated":"2017-02-17 18:22:21.000000000","message":"Cli use the api too. If just api use this function, it is fine. But cli \u0026 api use it, So we need a dict Object. It would be easy serialized.","commit_id":"813a026a46689ddae5b33609b9d3ac4ee8312ba3"},{"author":{"_account_id":23094,"name":"Staroverov Anton","email":"avstaroverov@gmail.com","username":"astaroverov"},"change_message_id":"91b2a2186c952cbc21f83236af5e41714e368f38","unresolved":false,"context_lines":[{"line_number":349,"context_line":"    def __getitem__(self, key):"},{"line_number":350,"context_line":"        return self.task[key]"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    def to_dict(self):"},{"line_number":353,"context_line":"        db_task \u003d self.task"},{"line_number":354,"context_line":"        deployment_name \u003d db.deployment_get("},{"line_number":355,"context_line":"            self.task[\"deployment_uuid\"])[\"name\"]"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa31d9ce_3b5fbe0f","line":352,"in_reply_to":"fa31d9ce_e8671de8","updated":"2017-02-17 11:06:43.000000000","message":"Looks like it\u0027s correct","commit_id":"813a026a46689ddae5b33609b9d3ac4ee8312ba3"}],"tests/unit/cli/commands/test_task.py":[{"author":{"_account_id":23094,"name":"Staroverov Anton","email":"avstaroverov@gmail.com","username":"astaroverov"},"change_message_id":"21eb5780f70fbc0f6af998c939aa1d1bf4cc1abe","unresolved":false,"context_lines":[{"line_number":464,"context_line":"        mock_os_path.exists \u003d lambda p: p.startswith(\"path_to_\")"},{"line_number":465,"context_line":"        mock_os_path.expanduser \u003d lambda p: p + \"_expanded\""},{"line_number":466,"context_line":"        mock_os_path.realpath.side_effect \u003d lambda p: \"realpath_\" + p"},{"line_number":467,"context_line":"        # results_iter \u003d iter(self._make_result([\"bar\"])"},{"line_number":468,"context_line":"        #"},{"line_number":469,"context_line":"        # data \u003d ["},{"line_number":470,"context_line":"        #     {\"key\": {\"name\": \"class.test\", \"pos\": 0},"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba2be162_935d02ec","line":467,"updated":"2017-03-01 07:48:34.000000000","message":"Probably those lines should be removed","commit_id":"813a026a46689ddae5b33609b9d3ac4ee8312ba3"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"2a59ad20c002f022742bc9dc7485dd1ee5ce5cda","unresolved":false,"context_lines":[{"line_number":464,"context_line":"        mock_os_path.exists \u003d lambda p: p.startswith(\"path_to_\")"},{"line_number":465,"context_line":"        mock_os_path.expanduser \u003d lambda p: p + \"_expanded\""},{"line_number":466,"context_line":"        mock_os_path.realpath.side_effect \u003d lambda p: \"realpath_\" + p"},{"line_number":467,"context_line":"        # results_iter \u003d iter(self._make_result([\"bar\"])"},{"line_number":468,"context_line":"        #"},{"line_number":469,"context_line":"        # data \u003d ["},{"line_number":470,"context_line":"        #     {\"key\": {\"name\": \"class.test\", \"pos\": 0},"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba2be162_b3403158","line":467,"in_reply_to":"ba2be162_935d02ec","updated":"2017-03-01 15:24:14.000000000","message":"It was removed in patch 9:)","commit_id":"813a026a46689ddae5b33609b9d3ac4ee8312ba3"}]}
