)]}'
{"rally/cli/commands/task.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"d598d71c29106916d0212d5f611d7845cbcc426c","unresolved":false,"context_lines":[{"line_number":470,"context_line":"                    \"of %s.\") % (task[\"status\"], \", \".join(finished_statuses)))"},{"line_number":471,"context_line":"            return 1"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"        reporter_cls \u003d treporter.TaskReporter.get(\"json\")"},{"line_number":474,"context_line":"        reporter_cls.validate(None)"},{"line_number":475,"context_line":"        result \u003d treporter.TaskReporter.make(reporter_cls,"},{"line_number":476,"context_line":"                                             [task],"},{"line_number":477,"context_line":"                                             None)"},{"line_number":478,"context_line":"        if \"print\" in result:"},{"line_number":479,"context_line":"            print(result[\"print\"])"},{"line_number":480,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5ff73747_8f239c56","line":477,"range":{"start_line":473,"start_character":8,"end_line":477,"end_character":50},"updated":"2017-04-27 06:53:33.000000000","message":"1) let\u0027s extend API with new method \"report\"\n2) old `rally task results` should return JSON in old format(where atomics have old format too), so I prefer to leave here old code and just extend `rally task report` command OR we can extend reporters mechanism, so it will accept one more argument - options. For JSON it will accept \"version\" key there. 0 version is an old format, 1 is a new one.","commit_id":"25a1669fe772a270257fefd254ad38a48e45041d"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"e1e2df93e2a0332df29e889a16360b0d22a6e20e","unresolved":false,"context_lines":[{"line_number":453,"context_line":""},{"line_number":454,"context_line":"    @cliutils.args(\"--uuid\", type\u003dstr, dest\u003d\"task_id\", help\u003d\"UUID of task.\")"},{"line_number":455,"context_line":"    @cliutils.args(\"--close-warning\", dest\u003d\"close_warning\","},{"line_number":456,"context_line":"                   action\u003d\"store_const\", const\u003dTrue,"},{"line_number":457,"context_line":"                   help\u003d\"close the warning message.\")"},{"line_number":458,"context_line":"    @envutils.with_default_task_id"},{"line_number":459,"context_line":"    @cliutils.suppress_warnings"}],"source_content_type":"text/x-python","patch_set":16,"id":"1f013ff3_2488b3c4","line":456,"range":{"start_line":456,"start_character":27,"end_line":456,"end_character":38},"updated":"2017-05-13 03:20:48.000000000","message":"action\u003d\"store_true\" would be better.","commit_id":"c43e4f2257b17297d63300d456a6a90859db662f"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"e1e2df93e2a0332df29e889a16360b0d22a6e20e","unresolved":false,"context_lines":[{"line_number":653,"context_line":"    @cliutils.args(\"--uuid\", dest\u003d\"task_id\", nargs\u003d\"+\", type\u003dstr,"},{"line_number":654,"context_line":"                   help\u003d\"UUIDs of tasks\")"},{"line_number":655,"context_line":"    @cliutils.args(\"--type\", dest\u003d\"out_format\", type\u003dstr,"},{"line_number":656,"context_line":"                   required\u003dFalse, default\u003d\"html\","},{"line_number":657,"context_line":"                   help\u003d\"Report type (Defaults to JSON). Out-of-the-box \""},{"line_number":658,"context_line":"                        \"types: HTML, HTML-Static, JSON, JUnit-XML. \""},{"line_number":659,"context_line":"                        \"HINT: You can list all types, executing `rally \""}],"source_content_type":"text/x-python","patch_set":16,"id":"1f013ff3_e491abf3","line":656,"range":{"start_line":656,"start_character":44,"end_line":656,"end_character":48},"updated":"2017-05-13 03:20:48.000000000","message":"(Defaults to JSON)?","commit_id":"c43e4f2257b17297d63300d456a6a90859db662f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"c66c5e754ac0a4037dd242781f775a08182aa13f","unresolved":false,"context_lines":[{"line_number":632,"context_line":"        else:"},{"line_number":633,"context_line":"            print(result)"},{"line_number":634,"context_line":""},{"line_number":635,"context_line":"    @cliutils.deprecated_args(\"--tasks\", dest\u003d\"tasks\", nargs\u003d\"+\","},{"line_number":636,"context_line":"                              release\u003d\"0.10.0\", alternative\u003d\"--uuid\")"},{"line_number":637,"context_line":"    @cliutils.deprecated_args(\"--out\", metavar\u003d\"\u003cpath\u003e\","},{"line_number":638,"context_line":"                              type\u003dstr, dest\u003d\"out\", required\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":17,"id":"ff0f0b1f_7971aae0","line":635,"range":{"start_line":635,"start_character":41,"end_line":635,"end_character":53},"updated":"2017-05-18 05:56:31.000000000","message":"`--tasks` argument has the same format as `--uuids`, so we can reduce number of argument of `def report` method by using the same dest for both --tasks and --uuids","commit_id":"cbaa4fdef3b401609a97f874cbf6bd02a6092e1f"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"0e6939b1e441907ff10d410645009335394ea093","unresolved":false,"context_lines":[{"line_number":632,"context_line":"        else:"},{"line_number":633,"context_line":"            print(result)"},{"line_number":634,"context_line":""},{"line_number":635,"context_line":"    @cliutils.deprecated_args(\"--tasks\", dest\u003d\"tasks\", nargs\u003d\"+\","},{"line_number":636,"context_line":"                              release\u003d\"0.10.0\", alternative\u003d\"--uuid\")"},{"line_number":637,"context_line":"    @cliutils.deprecated_args(\"--out\", metavar\u003d\"\u003cpath\u003e\","},{"line_number":638,"context_line":"                              type\u003dstr, dest\u003d\"out\", required\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":17,"id":"ff0f0b1f_d48e3b26","line":635,"range":{"start_line":635,"start_character":41,"end_line":635,"end_character":53},"in_reply_to":"ff0f0b1f_7971aae0","updated":"2017-05-18 06:31:19.000000000","message":"They are not exactly the same format. The json file could be used in \"--task\", here i saved it, just for the json file and differentiating between old report and new report. :)","commit_id":"cbaa4fdef3b401609a97f874cbf6bd02a6092e1f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"c66c5e754ac0a4037dd242781f775a08182aa13f","unresolved":false,"context_lines":[{"line_number":634,"context_line":""},{"line_number":635,"context_line":"    @cliutils.deprecated_args(\"--tasks\", dest\u003d\"tasks\", nargs\u003d\"+\","},{"line_number":636,"context_line":"                              release\u003d\"0.10.0\", alternative\u003d\"--uuid\")"},{"line_number":637,"context_line":"    @cliutils.deprecated_args(\"--out\", metavar\u003d\"\u003cpath\u003e\","},{"line_number":638,"context_line":"                              type\u003dstr, dest\u003d\"out\", required\u003dFalse,"},{"line_number":639,"context_line":"                              release\u003d\"0.10.0\", alternative\u003d\"--to\")"},{"line_number":640,"context_line":"    @cliutils.args(\"--open\", dest\u003d\"open_it\", action\u003d\"store_true\","},{"line_number":641,"context_line":"                   help\u003d\"Open the output in a browser.\")"},{"line_number":642,"context_line":"    @cliutils.deprecated_args(\"--html\", dest\u003d\"out_format\","}],"source_content_type":"text/x-python","patch_set":17,"id":"ff0f0b1f_5976e6da","line":639,"range":{"start_line":637,"start_character":4,"end_line":639,"end_character":67},"updated":"2017-05-18 05:56:31.000000000","message":"same here","commit_id":"cbaa4fdef3b401609a97f874cbf6bd02a6092e1f"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"0e6939b1e441907ff10d410645009335394ea093","unresolved":false,"context_lines":[{"line_number":634,"context_line":""},{"line_number":635,"context_line":"    @cliutils.deprecated_args(\"--tasks\", dest\u003d\"tasks\", nargs\u003d\"+\","},{"line_number":636,"context_line":"                              release\u003d\"0.10.0\", alternative\u003d\"--uuid\")"},{"line_number":637,"context_line":"    @cliutils.deprecated_args(\"--out\", metavar\u003d\"\u003cpath\u003e\","},{"line_number":638,"context_line":"                              type\u003dstr, dest\u003d\"out\", required\u003dFalse,"},{"line_number":639,"context_line":"                              release\u003d\"0.10.0\", alternative\u003d\"--to\")"},{"line_number":640,"context_line":"    @cliutils.args(\"--open\", dest\u003d\"open_it\", action\u003d\"store_true\","},{"line_number":641,"context_line":"                   help\u003d\"Open the output in a browser.\")"},{"line_number":642,"context_line":"    @cliutils.deprecated_args(\"--html\", dest\u003d\"out_format\","}],"source_content_type":"text/x-python","patch_set":17,"id":"ff0f0b1f_14f393a0","line":639,"range":{"start_line":637,"start_character":4,"end_line":639,"end_character":67},"in_reply_to":"ff0f0b1f_5976e6da","updated":"2017-05-18 06:31:19.000000000","message":"we have used the same dest for these arguments except \u0027--tasks\u0027,however, i want i understand your meaning, we do not need to deprecate these arguments, and we use \n\u0027@cliutils.args(\"--out\", \"--to\",....)\u0027 to still support them,is that?","commit_id":"cbaa4fdef3b401609a97f874cbf6bd02a6092e1f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"c66c5e754ac0a4037dd242781f775a08182aa13f","unresolved":false,"context_lines":[{"line_number":639,"context_line":"                              release\u003d\"0.10.0\", alternative\u003d\"--to\")"},{"line_number":640,"context_line":"    @cliutils.args(\"--open\", dest\u003d\"open_it\", action\u003d\"store_true\","},{"line_number":641,"context_line":"                   help\u003d\"Open the output in a browser.\")"},{"line_number":642,"context_line":"    @cliutils.deprecated_args(\"--html\", dest\u003d\"out_format\","},{"line_number":643,"context_line":"                              action\u003d\"store_const\", const\u003d\"html\","},{"line_number":644,"context_line":"                              release\u003d\"0.10.0\", alternative\u003d\"--type html\")"},{"line_number":645,"context_line":"    @cliutils.deprecated_args(\"--html-static\", dest\u003d\"out_format\","},{"line_number":646,"context_line":"                              action\u003d\"store_const\", const\u003d\"html-static\","},{"line_number":647,"context_line":"                              release\u003d\"0.10.0\","},{"line_number":648,"context_line":"                              alternative\u003d\"--type html-static\")"},{"line_number":649,"context_line":"    @cliutils.deprecated_args(\"--junit\", dest\u003d\"out_format\","},{"line_number":650,"context_line":"                              action\u003d\"store_const\", const\u003d\"junit\","},{"line_number":651,"context_line":"                              release\u003d\"0.10.0\","},{"line_number":652,"context_line":"                              alternative\u003d\"--type junit-xml\")"},{"line_number":653,"context_line":"    @cliutils.args(\"--uuid\", dest\u003d\"task_id\", nargs\u003d\"+\", type\u003dstr,"},{"line_number":654,"context_line":"                   help\u003d\"UUIDs of tasks\")"},{"line_number":655,"context_line":"    @cliutils.args(\"--type\", dest\u003d\"out_format\", type\u003dstr,"}],"source_content_type":"text/x-python","patch_set":17,"id":"ff0f0b1f_397332ea","line":652,"range":{"start_line":642,"start_character":4,"end_line":652,"end_character":61},"updated":"2017-05-18 05:56:31.000000000","message":"and here","commit_id":"cbaa4fdef3b401609a97f874cbf6bd02a6092e1f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"c66c5e754ac0a4037dd242781f775a08182aa13f","unresolved":false,"context_lines":[{"line_number":670,"context_line":"               open_it\u003dFalse, out_format\u003d\"html\"):"},{"line_number":671,"context_line":"        \"\"\"Generate report file or string for specified task.\"\"\""},{"line_number":672,"context_line":"        if tasks:"},{"line_number":673,"context_line":"            LOG.warning(\"Old format of report command is deprecated \""},{"line_number":674,"context_line":"                        \"since 0.10.0, please use new format.\""},{"line_number":675,"context_line":"                        \"`rally task report --uuid \u003cuuid\u003e \""},{"line_number":676,"context_line":"                        \"--type \u003ctype\u003e --to \u003cdest\u003e`\")"},{"line_number":677,"context_line":"            self._old_report(api, tasks\u003dtasks, out\u003dout,"},{"line_number":678,"context_line":"                             open_it\u003dopen_it, out_format\u003dout_format)"},{"line_number":679,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":17,"id":"ff0f0b1f_99b7de87","line":676,"range":{"start_line":673,"start_character":11,"end_line":676,"end_character":53},"updated":"2017-05-18 05:56:31.000000000","message":"the warning message should be printed via deprecated_args decorator.","commit_id":"cbaa4fdef3b401609a97f874cbf6bd02a6092e1f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"c66c5e754ac0a4037dd242781f775a08182aa13f","unresolved":false,"context_lines":[{"line_number":677,"context_line":"            self._old_report(api, tasks\u003dtasks, out\u003dout,"},{"line_number":678,"context_line":"                             open_it\u003dopen_it, out_format\u003dout_format)"},{"line_number":679,"context_line":"        else:"},{"line_number":680,"context_line":"            if out_format \u003d\u003d \"junit\":"},{"line_number":681,"context_line":"                out_format \u003d \"junit-xml\""},{"line_number":682,"context_line":"            self._new_report(api, task_id\u003dtask_id,"},{"line_number":683,"context_line":"                             output_type\u003dout_format,"},{"line_number":684,"context_line":"                             output_dest\u003dout,"}],"source_content_type":"text/x-python","patch_set":17,"id":"ff0f0b1f_f97c9ab6","line":681,"range":{"start_line":680,"start_character":12,"end_line":681,"end_character":40},"updated":"2017-05-18 05:56:31.000000000","message":"why we need it?","commit_id":"cbaa4fdef3b401609a97f874cbf6bd02a6092e1f"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"0e6939b1e441907ff10d410645009335394ea093","unresolved":false,"context_lines":[{"line_number":677,"context_line":"            self._old_report(api, tasks\u003dtasks, out\u003dout,"},{"line_number":678,"context_line":"                             open_it\u003dopen_it, out_format\u003dout_format)"},{"line_number":679,"context_line":"        else:"},{"line_number":680,"context_line":"            if out_format \u003d\u003d \"junit\":"},{"line_number":681,"context_line":"                out_format \u003d \"junit-xml\""},{"line_number":682,"context_line":"            self._new_report(api, task_id\u003dtask_id,"},{"line_number":683,"context_line":"                             output_type\u003dout_format,"},{"line_number":684,"context_line":"                             output_dest\u003dout,"}],"source_content_type":"text/x-python","patch_set":17,"id":"ff0f0b1f_b4d74724","line":681,"range":{"start_line":680,"start_character":12,"end_line":681,"end_character":40},"in_reply_to":"ff0f0b1f_f97c9ab6","updated":"2017-05-18 06:31:19.000000000","message":"Here just for back compatible, we used \"rally task report --junit\", or we still use \"junit\", not \"junit-xml\" ?","commit_id":"cbaa4fdef3b401609a97f874cbf6bd02a6092e1f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"c66c5e754ac0a4037dd242781f775a08182aa13f","unresolved":false,"context_lines":[{"line_number":684,"context_line":"                             output_dest\u003dout,"},{"line_number":685,"context_line":"                             open_it\u003dopen_it)"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"    def _old_report(self, api, tasks\u003dNone, out\u003dNone, open_it\u003dFalse,"},{"line_number":688,"context_line":"                    out_format\u003d\"html\"):"},{"line_number":689,"context_line":"        \"\"\"Generate report file for specified task."},{"line_number":690,"context_line":""},{"line_number":691,"context_line":"        :param tasks: list, UUIDs of tasks or pathes files with tasks results"}],"source_content_type":"text/x-python","patch_set":17,"id":"ff0f0b1f_4324b30d","line":688,"range":{"start_line":687,"start_character":3,"end_line":688,"end_character":39},"updated":"2017-05-18 05:56:31.000000000","message":"In terms of html, html-static and junit reports, the old result is not different from new one, so I do not think we need two separate methods","commit_id":"cbaa4fdef3b401609a97f874cbf6bd02a6092e1f"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"0e6939b1e441907ff10d410645009335394ea093","unresolved":false,"context_lines":[{"line_number":684,"context_line":"                             output_dest\u003dout,"},{"line_number":685,"context_line":"                             open_it\u003dopen_it)"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"    def _old_report(self, api, tasks\u003dNone, out\u003dNone, open_it\u003dFalse,"},{"line_number":688,"context_line":"                    out_format\u003d\"html\"):"},{"line_number":689,"context_line":"        \"\"\"Generate report file for specified task."},{"line_number":690,"context_line":""},{"line_number":691,"context_line":"        :param tasks: list, UUIDs of tasks or pathes files with tasks results"}],"source_content_type":"text/x-python","patch_set":17,"id":"ff0f0b1f_54734b81","line":688,"range":{"start_line":687,"start_character":3,"end_line":688,"end_character":39},"in_reply_to":"ff0f0b1f_4324b30d","updated":"2017-05-18 06:31:19.000000000","message":"Hi @Andrey, as our discussion some time ago, old report command supports `rally task report --task xxx.json`, but our new report command does not. we planned to close it that directly creating report via xxx.json, and provide `rally task import` to import xxx.json into rally database.So i saved _old_report.","commit_id":"cbaa4fdef3b401609a97f874cbf6bd02a6092e1f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"d57f1eae739fb34a02fed4d9421c144e8957c1ad","unresolved":false,"context_lines":[{"line_number":451,"context_line":"            print(_(\"* To get raw JSON output of task results, run:\"))"},{"line_number":452,"context_line":"            print(\"\\trally task results %s\\n\" % task[\"uuid\"])"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"    @cliutils.args(\"--uuid\", type\u003dstr, dest\u003d\"task_id\", help\u003d\"UUID of task.\")"},{"line_number":455,"context_line":"    @cliutils.args(\"--close-warning\", dest\u003d\"close_warning\","},{"line_number":456,"context_line":"                   action\u003d\"store_true\","},{"line_number":457,"context_line":"                   help\u003d\"close the warning message.\")"},{"line_number":458,"context_line":"    @envutils.with_default_task_id"},{"line_number":459,"context_line":"    @cliutils.suppress_warnings"},{"line_number":460,"context_line":"    def results(self, api, task_id\u003dNone, close_warning\u003dFalse):"},{"line_number":461,"context_line":"        \"\"\"Display raw task results which is old format."},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"        This will produce a lot of output data about every iteration."},{"line_number":464,"context_line":"        This command is deprecated since 0.10.0,please use"},{"line_number":465,"context_line":"        `rally task report --type json` instead."},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"        :param task_id: Task uuid"},{"line_number":468,"context_line":"        \"\"\""},{"line_number":469,"context_line":"        if not close_warning:"},{"line_number":470,"context_line":"            print(\"WARNING `rally task results --uuid \u003cuuid\u003e` is deprecated\""},{"line_number":471,"context_line":"                  \"since 0.10.0,please use \""},{"line_number":472,"context_line":"                  \"`rally task report --type json --uuid \u003cuuid\u003e` instead.\""},{"line_number":473,"context_line":"                  \"You can use --close-warning to close this message too.\","},{"line_number":474,"context_line":"                  file\u003dsys.stderr)"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"        task \u003d api.task.get(task_id)"},{"line_number":477,"context_line":"        finished_statuses \u003d (consts.TaskStatus.FINISHED,"}],"source_content_type":"text/x-python","patch_set":19,"id":"df140735_9e542b23","line":474,"range":{"start_line":454,"start_character":4,"end_line":474,"end_character":34},"updated":"2017-05-31 15:09:47.000000000","message":"let\u0027s not deprecate `rally task results` command for now. Our current json reporter returns results in the same old format and it makes hard to deliver a new format. We need to port json reporter to the new format and only after that deprecate `results` command.","commit_id":"c09a037ca635b30cd237a67d3eb2797ccf4a3bef"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"30fc9e254ea5feb40f75035e3db338e22c1fe8c3","unresolved":false,"context_lines":[{"line_number":447,"context_line":"            print(\"\\nHINTS:\")"},{"line_number":448,"context_line":"            print(_(\"* To plot HTML graphics with this data, run:\"))"},{"line_number":449,"context_line":"            print(\"\\trally task report %s --out output.html\\n\" % task[\"uuid\"])"},{"line_number":450,"context_line":"            print(_(\"* To generate a JUnit report, run:\"))"},{"line_number":451,"context_line":"            print(\"\\trally task report %s --junit --out output.xml\\n\" %"},{"line_number":452,"context_line":"                  task[\"uuid\"])"},{"line_number":453,"context_line":"            print(_(\"* To get raw JSON output of task results, run:\"))"},{"line_number":454,"context_line":"            print(\"\\trally task results %s\\n\" % task[\"uuid\"])"},{"line_number":455,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"7f231b9d_7d2d36fc","line":452,"range":{"start_line":450,"start_character":12,"end_line":452,"end_character":31},"updated":"2017-06-19 15:06:31.000000000","message":"it should be modified.","commit_id":"0cd68da5370502df355becbc1ca62c54bf08cfec"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"30be0ca16968f9f3af87d267365b237a3f2ebc1f","unresolved":false,"context_lines":[{"line_number":447,"context_line":"            print(\"\\nHINTS:\")"},{"line_number":448,"context_line":"            print(_(\"* To plot HTML graphics with this data, run:\"))"},{"line_number":449,"context_line":"            print(\"\\trally task report %s --out output.html\\n\" % task[\"uuid\"])"},{"line_number":450,"context_line":"            print(_(\"* To generate a JUnit report, run:\"))"},{"line_number":451,"context_line":"            print(\"\\trally task report %s --junit --out output.xml\\n\" %"},{"line_number":452,"context_line":"                  task[\"uuid\"])"},{"line_number":453,"context_line":"            print(_(\"* To get raw JSON output of task results, run:\"))"},{"line_number":454,"context_line":"            print(\"\\trally task results %s\\n\" % task[\"uuid\"])"},{"line_number":455,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"5f201791_80e71741","line":452,"range":{"start_line":450,"start_character":12,"end_line":452,"end_character":31},"in_reply_to":"7f231b9d_7d2d36fc","updated":"2017-06-23 11:36:04.000000000","message":"Done","commit_id":"0cd68da5370502df355becbc1ca62c54bf08cfec"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"b463f958956f775a274887135304ff5e3e90face","unresolved":false,"context_lines":[{"line_number":624,"context_line":""},{"line_number":625,"context_line":"    @cliutils.deprecated_args(\"--tasks\", dest\u003d\"tasks\", nargs\u003d\"+\","},{"line_number":626,"context_line":"                              release\u003d\"0.10.0\", alternative\u003d\"--uuid\")"},{"line_number":627,"context_line":"    @cliutils.deprecated_args(\"--out\", metavar\u003d\"\u003cpath\u003e\","},{"line_number":628,"context_line":"                              type\u003dstr, dest\u003d\"out\", required\u003dFalse,"},{"line_number":629,"context_line":"                              release\u003d\"0.10.0\", alternative\u003d\"--to\")"},{"line_number":630,"context_line":"    @cliutils.args(\"--open\", dest\u003d\"open_it\", action\u003d\"store_true\","},{"line_number":631,"context_line":"                   help\u003d\"Open the output in a browser.\")"},{"line_number":632,"context_line":"    @cliutils.args(\"--html\", dest\u003d\"out_format\","}],"source_content_type":"text/x-python","patch_set":37,"id":"7f231b9d_4085f805","line":629,"range":{"start_line":627,"start_character":4,"end_line":629,"end_character":67},"updated":"2017-06-19 10:45:38.000000000","message":"let\u0027s leave the old name of the argument.","commit_id":"0cd68da5370502df355becbc1ca62c54bf08cfec"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"b463f958956f775a274887135304ff5e3e90face","unresolved":false,"context_lines":[{"line_number":650,"context_line":"    def report(self, api, tasks\u003dNone, task_id\u003dNone, out\u003dNone,"},{"line_number":651,"context_line":"               open_it\u003dFalse, out_format\u003d\"html\"):"},{"line_number":652,"context_line":"        \"\"\"generate report file or string for specified task.\"\"\""},{"line_number":653,"context_line":"        if tasks:"},{"line_number":654,"context_line":"            self._old_report(api, tasks\u003dtasks, out\u003dout,"},{"line_number":655,"context_line":"                             open_it\u003dopen_it, out_format\u003dout_format)"},{"line_number":656,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":37,"id":"7f231b9d_80f55059","line":653,"range":{"start_line":653,"start_character":8,"end_line":653,"end_character":17},"updated":"2017-06-19 10:45:38.000000000","message":"1) let\u0027s use the same destination for --tasks and --uuids\n\n2) let\u0027s try to use _new_report for more cases.\n\n   if any([task for task in tasks if os.path.exists(os.path.expanduser(task_task))]):\n       # it requires loading from file, so it is an old case\n   else:\n       # do it in new way\n\n3) let\u0027s reduce code duplication and extent method `export` with `--open` flag. In this case we will able to reuse that method here.","commit_id":"0cd68da5370502df355becbc1ca62c54bf08cfec"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"30be0ca16968f9f3af87d267365b237a3f2ebc1f","unresolved":false,"context_lines":[{"line_number":650,"context_line":"    def report(self, api, tasks\u003dNone, task_id\u003dNone, out\u003dNone,"},{"line_number":651,"context_line":"               open_it\u003dFalse, out_format\u003d\"html\"):"},{"line_number":652,"context_line":"        \"\"\"generate report file or string for specified task.\"\"\""},{"line_number":653,"context_line":"        if tasks:"},{"line_number":654,"context_line":"            self._old_report(api, tasks\u003dtasks, out\u003dout,"},{"line_number":655,"context_line":"                             open_it\u003dopen_it, out_format\u003dout_format)"},{"line_number":656,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":37,"id":"5f201791_23eded24","line":653,"range":{"start_line":653,"start_character":8,"end_line":653,"end_character":17},"in_reply_to":"7f231b9d_80f55059","updated":"2017-06-23 11:36:04.000000000","message":"Done","commit_id":"0cd68da5370502df355becbc1ca62c54bf08cfec"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"b463f958956f775a274887135304ff5e3e90face","unresolved":false,"context_lines":[{"line_number":755,"context_line":"                output_file \u003d os.path.expanduser(path)"},{"line_number":756,"context_line":"                with open(output_file, \"w+\") as f:"},{"line_number":757,"context_line":"                    f.write(report[\"files\"][path])"},{"line_number":758,"context_line":"                if open_it:"},{"line_number":759,"context_line":"                    if \"open\" in report:"},{"line_number":760,"context_line":"                        webbrowser.open_new_tab("},{"line_number":761,"context_line":"                            \"file://\" + os.path.realpath(path))"},{"line_number":762,"context_line":""},{"line_number":763,"context_line":"        if \"print\" in report:"},{"line_number":764,"context_line":"            print(report[\"print\"])"}],"source_content_type":"text/x-python","patch_set":37,"id":"7f231b9d_c027c8c6","line":761,"range":{"start_line":758,"start_character":16,"end_line":761,"end_character":63},"updated":"2017-06-19 10:45:38.000000000","message":"1) it should be at the same position as L753 (the report can miss files, but has a page to look at)\n\n2) please, move joining with `file://` to actual exporters.","commit_id":"0cd68da5370502df355becbc1ca62c54bf08cfec"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"30be0ca16968f9f3af87d267365b237a3f2ebc1f","unresolved":false,"context_lines":[{"line_number":755,"context_line":"                output_file \u003d os.path.expanduser(path)"},{"line_number":756,"context_line":"                with open(output_file, \"w+\") as f:"},{"line_number":757,"context_line":"                    f.write(report[\"files\"][path])"},{"line_number":758,"context_line":"                if open_it:"},{"line_number":759,"context_line":"                    if \"open\" in report:"},{"line_number":760,"context_line":"                        webbrowser.open_new_tab("},{"line_number":761,"context_line":"                            \"file://\" + os.path.realpath(path))"},{"line_number":762,"context_line":""},{"line_number":763,"context_line":"        if \"print\" in report:"},{"line_number":764,"context_line":"            print(report[\"print\"])"}],"source_content_type":"text/x-python","patch_set":37,"id":"5f201791_5e38c09e","line":761,"range":{"start_line":758,"start_character":16,"end_line":761,"end_character":63},"in_reply_to":"7f231b9d_c027c8c6","updated":"2017-06-23 11:36:04.000000000","message":"Done","commit_id":"0cd68da5370502df355becbc1ca62c54bf08cfec"}],"rally/plugins/common/exporter/reporters.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"b463f958956f775a274887135304ff5e3e90face","unresolved":false,"context_lines":[{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":5,"context_line":"#    a copy of the License at"},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#         http://www.apache.org/licenses/LICENSE-2.0"},{"line_number":8,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":37,"id":"7f231b9d_000b8029","line":5,"updated":"2017-06-19 10:45:38.000000000","message":"this module contains a lot of references to previous term \"reporters\"","commit_id":"0cd68da5370502df355becbc1ca62c54bf08cfec"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"30be0ca16968f9f3af87d267365b237a3f2ebc1f","unresolved":false,"context_lines":[{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":5,"context_line":"#    a copy of the License at"},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#         http://www.apache.org/licenses/LICENSE-2.0"},{"line_number":8,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":37,"id":"5f201791_a3f57d85","line":5,"in_reply_to":"7f231b9d_000b8029","updated":"2017-06-23 11:36:04.000000000","message":"i just updated class name to exporter at new patch. \nyou meant we should use \"export\" instead of all \"report\"?","commit_id":"0cd68da5370502df355becbc1ca62c54bf08cfec"}],"rally/plugins/common/reporters/reporters.py":[{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"27c48203a4aa98599fc106b04edcc2d627322346","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    coincidental):"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"      .. code-block:: json"},{"line_number":31,"context_line":"      "},{"line_number":32,"context_line":"    \"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_ed997ad0","line":31,"range":{"start_line":31,"start_character":0,"end_line":31,"end_character":6},"updated":"2017-05-03 04:18:45.000000000","message":"redundant","commit_id":"f60904db5c2274aaf1e6b3361b52c3412fc28bbb"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"d57f1eae739fb34a02fed4d9421c144e8957c1ad","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"@reporter.configure(\"json\")"},{"line_number":23,"context_line":"class JSONReporter(reporter.TaskReporter):"},{"line_number":24,"context_line":"    \"\"\"Generates task report in JSON format."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    An example of the report (All dates, numbers, names appearing in this"}],"source_content_type":"text/x-python","patch_set":19,"id":"df140735_09046349","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":42},"updated":"2017-05-31 15:09:47.000000000","message":"let\u0027s name it as OldJSONResultsMixin and do not wrap with `configure` decorator. \"json\" reporter will have another output format.","commit_id":"c09a037ca635b30cd237a67d3eb2797ccf4a3bef"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"3e44ab17ac47094b5e322a5803c55987bc717bc3","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"@reporter.configure(\"json\")"},{"line_number":23,"context_line":"class JSONReporter(reporter.TaskReporter):"},{"line_number":24,"context_line":"    \"\"\"Generates task report in JSON format."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    An example of the report (All dates, numbers, names appearing in this"}],"source_content_type":"text/x-python","patch_set":19,"id":"df140735_32a66212","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":42},"in_reply_to":"df140735_09046349","updated":"2017-06-01 01:46:12.000000000","message":"sorry, i can not get the point, did you mean now we still use old json format? In this patch, we just port old report to report plugin, and provide new command format, \"rally task report --type\", is right?","commit_id":"c09a037ca635b30cd237a67d3eb2797ccf4a3bef"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"4bbbdd4b858a1c37c1694dbc580a77dc0e61c305","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"@reporter.configure(\"json\")"},{"line_number":23,"context_line":"class JSONReporter(reporter.TaskReporter):"},{"line_number":24,"context_line":"    \"\"\"Generates task report in JSON format."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    An example of the report (All dates, numbers, names appearing in this"}],"source_content_type":"text/x-python","patch_set":19,"id":"df140735_1c3250a8","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":42},"in_reply_to":"df140735_32a66212","updated":"2017-06-01 05:02:06.000000000","message":"There were a lot of bug reports related to missed data in json (some extra data presence in HTML reports and missied in all other places). JSONReporter class returns results in the \"old\" format(except atomic actions) now.\n\nIf we make JSONReporter class public now, users will start using it and we will have problems while modifying the format due to backward compatibility.\n\nI propose to not deprecate old `rally task results` command which returns old format and to not provide a way to generate json via `rally task report` for now. It will allow us to merge this patch and continue working on new json format separately.","commit_id":"c09a037ca635b30cd237a67d3eb2797ccf4a3bef"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"d57f1eae739fb34a02fed4d9421c144e8957c1ad","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        # nothing to check :)"},{"line_number":111,"context_line":"        pass"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def _generate(self):"},{"line_number":114,"context_line":"        \"\"\"Prepare raw report.\"\"\""},{"line_number":115,"context_line":"        results \u003d [{\"key\": x[\"key\"], \"result\": x[\"data\"][\"raw\"],"},{"line_number":116,"context_line":"                    \"sla\": x[\"data\"][\"sla\"],"}],"source_content_type":"text/x-python","patch_set":19,"id":"df140735_8963d31a","line":113,"range":{"start_line":113,"start_character":4,"end_line":113,"end_character":24},"updated":"2017-05-31 15:09:47.000000000","message":"I do not see reasons for a separate method. let\u0027s include the code from it into `generate method`","commit_id":"c09a037ca635b30cd237a67d3eb2797ccf4a3bef"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"4bbbdd4b858a1c37c1694dbc580a77dc0e61c305","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        # nothing to check :)"},{"line_number":111,"context_line":"        pass"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def _generate(self):"},{"line_number":114,"context_line":"        \"\"\"Prepare raw report.\"\"\""},{"line_number":115,"context_line":"        results \u003d [{\"key\": x[\"key\"], \"result\": x[\"data\"][\"raw\"],"},{"line_number":116,"context_line":"                    \"sla\": x[\"data\"][\"sla\"],"}],"source_content_type":"text/x-python","patch_set":19,"id":"df140735_5c17a8ee","line":113,"range":{"start_line":113,"start_character":4,"end_line":113,"end_character":24},"in_reply_to":"df140735_32ac229f","updated":"2017-06-01 05:02:06.000000000","message":"Heh. I wanted to leave that comment to HTTPReporter class to L139, but left it to another class. But anyway, I missed that _generate method of HTTPReporter is used by JunitXML","commit_id":"c09a037ca635b30cd237a67d3eb2797ccf4a3bef"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"b8af1831bb6bbbe899a0715ca605fdd1baa8464b","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        # nothing to check :)"},{"line_number":111,"context_line":"        pass"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def _generate(self):"},{"line_number":114,"context_line":"        \"\"\"Prepare raw report.\"\"\""},{"line_number":115,"context_line":"        results \u003d [{\"key\": x[\"key\"], \"result\": x[\"data\"][\"raw\"],"},{"line_number":116,"context_line":"                    \"sla\": x[\"data\"][\"sla\"],"}],"source_content_type":"text/x-python","patch_set":19,"id":"df140735_32ac229f","line":113,"range":{"start_line":113,"start_character":4,"end_line":113,"end_character":24},"in_reply_to":"df140735_8963d31a","updated":"2017-06-01 01:57:14.000000000","message":"This results will be used in html and junit report, i called this method via super(), like line #142. i will rename them, that will be more clear.","commit_id":"c09a037ca635b30cd237a67d3eb2797ccf4a3bef"}],"rally/task/exporter.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"b463f958956f775a274887135304ff5e3e90face","unresolved":false,"context_lines":[{"line_number":78,"context_line":"@plugin.base()"},{"line_number":79,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":80,"context_line":"class TaskExporter(plugin.Plugin):"},{"line_number":81,"context_line":"    \"\"\"Base class for all reporters for Tasks.\"\"\""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def __init__(self, tasks_results, output_destination):"},{"line_number":84,"context_line":"        \"\"\"Init reporter"}],"source_content_type":"text/x-python","patch_set":37,"id":"7f231b9d_e0c76463","line":81,"range":{"start_line":81,"start_character":26,"end_line":81,"end_character":35},"updated":"2017-06-19 10:45:38.000000000","message":"s/reporters/exporters","commit_id":"0cd68da5370502df355becbc1ca62c54bf08cfec"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"30be0ca16968f9f3af87d267365b237a3f2ebc1f","unresolved":false,"context_lines":[{"line_number":78,"context_line":"@plugin.base()"},{"line_number":79,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":80,"context_line":"class TaskExporter(plugin.Plugin):"},{"line_number":81,"context_line":"    \"\"\"Base class for all reporters for Tasks.\"\"\""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def __init__(self, tasks_results, output_destination):"},{"line_number":84,"context_line":"        \"\"\"Init reporter"}],"source_content_type":"text/x-python","patch_set":37,"id":"5f201791_e3d495bf","line":81,"range":{"start_line":81,"start_character":26,"end_line":81,"end_character":35},"in_reply_to":"7f231b9d_e0c76463","updated":"2017-06-23 11:36:04.000000000","message":"Done","commit_id":"0cd68da5370502df355becbc1ca62c54bf08cfec"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"b463f958956f775a274887135304ff5e3e90face","unresolved":false,"context_lines":[{"line_number":80,"context_line":"class TaskExporter(plugin.Plugin):"},{"line_number":81,"context_line":"    \"\"\"Base class for all reporters for Tasks.\"\"\""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def __init__(self, tasks_results, output_destination):"},{"line_number":84,"context_line":"        \"\"\"Init reporter"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        :param tasks_results: list of results to generate report for"}],"source_content_type":"text/x-python","patch_set":37,"id":"7f231b9d_a0be0cd2","line":83,"updated":"2017-06-19 10:45:38.000000000","message":"let\u0027s transmit api object here. It is not used by current exporters, but theoretically, it can obtain deployment information.","commit_id":"0cd68da5370502df355becbc1ca62c54bf08cfec"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"30be0ca16968f9f3af87d267365b237a3f2ebc1f","unresolved":false,"context_lines":[{"line_number":80,"context_line":"class TaskExporter(plugin.Plugin):"},{"line_number":81,"context_line":"    \"\"\"Base class for all reporters for Tasks.\"\"\""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def __init__(self, tasks_results, output_destination):"},{"line_number":84,"context_line":"        \"\"\"Init reporter"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        :param tasks_results: list of results to generate report for"}],"source_content_type":"text/x-python","patch_set":37,"id":"5f201791_7ebb7c0d","line":83,"in_reply_to":"7f231b9d_a0be0cd2","updated":"2017-06-23 11:36:04.000000000","message":"Done","commit_id":"0cd68da5370502df355becbc1ca62c54bf08cfec"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"b463f958956f775a274887135304ff5e3e90face","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        \"\"\""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    @staticmethod"},{"line_number":115,"context_line":"    def make(reporter_cls, task_results, output_destination):"},{"line_number":116,"context_line":"        \"\"\"Initialize reporter, generate and validate report."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        It is a base method which is called from API layer. It cannot be"}],"source_content_type":"text/x-python","patch_set":37,"id":"7f231b9d_a0a3acb1","line":115,"range":{"start_line":115,"start_character":13,"end_line":115,"end_character":25},"updated":"2017-06-19 10:45:38.000000000","message":"s/reporter_cls/exporter_cls","commit_id":"0cd68da5370502df355becbc1ca62c54bf08cfec"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"30be0ca16968f9f3af87d267365b237a3f2ebc1f","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        \"\"\""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    @staticmethod"},{"line_number":115,"context_line":"    def make(reporter_cls, task_results, output_destination):"},{"line_number":116,"context_line":"        \"\"\"Initialize reporter, generate and validate report."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        It is a base method which is called from API layer. It cannot be"}],"source_content_type":"text/x-python","patch_set":37,"id":"5f201791_3e64e4b8","line":115,"range":{"start_line":115,"start_character":13,"end_line":115,"end_character":25},"in_reply_to":"7f231b9d_a0a3acb1","updated":"2017-06-23 11:36:04.000000000","message":"Done","commit_id":"0cd68da5370502df355becbc1ca62c54bf08cfec"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"b463f958956f775a274887135304ff5e3e90face","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        It is a base method which is called from API layer. It cannot be"},{"line_number":119,"context_line":"        overridden. Do not even try! :)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        :param reporter_cls: class of VerificationReporter to be used"},{"line_number":122,"context_line":"        :param task_results: list of results to generate report for"},{"line_number":123,"context_line":"        :param output_destination: destination of report"},{"line_number":124,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":37,"id":"7f231b9d_00cdc083","line":121,"range":{"start_line":121,"start_character":8,"end_line":121,"end_character":69},"updated":"2017-06-19 10:45:38.000000000","message":"please, update this.","commit_id":"0cd68da5370502df355becbc1ca62c54bf08cfec"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"30be0ca16968f9f3af87d267365b237a3f2ebc1f","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        It is a base method which is called from API layer. It cannot be"},{"line_number":119,"context_line":"        overridden. Do not even try! :)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        :param reporter_cls: class of VerificationReporter to be used"},{"line_number":122,"context_line":"        :param task_results: list of results to generate report for"},{"line_number":123,"context_line":"        :param output_destination: destination of report"},{"line_number":124,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":37,"id":"5f201791_7e501cd5","line":121,"range":{"start_line":121,"start_character":8,"end_line":121,"end_character":69},"in_reply_to":"7f231b9d_00cdc083","updated":"2017-06-23 11:36:04.000000000","message":"Done","commit_id":"0cd68da5370502df355becbc1ca62c54bf08cfec"}]}
