)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"46f2a10bc849be79c72034f4205276350b5de7b8","unresolved":false,"context_lines":[{"line_number":17,"context_line":"we use it to improve the message so the user doesn\u0027t have to read"},{"line_number":18,"context_line":"the help of the command to figure out what they did wrong, e.g.:"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"  Operation or argument is not supported with version 1.0; \\"},{"line_number":21,"context_line":"  requires at least version 1.1"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"This only handles the aggregate set/list commands and could be used"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3fce034c_8d451a73","line":20,"updated":"2019-04-12 17:43:19.000000000","message":"Granted we can do more here - in this case it\u0027s not an option or argument, it\u0027s the command itself, so we could make the error message more granular about not only the necessary version but the thing that was wrong (the command in this case).","commit_id":"a4da387b9f522364ca10ea585f3f3862dfcb2308"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"09c1ff283812661084945579378a078ad7ca497c","unresolved":false,"context_lines":[{"line_number":17,"context_line":"we use it to improve the message so the user doesn\u0027t have to read"},{"line_number":18,"context_line":"the help of the command to figure out what they did wrong, e.g.:"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"  Operation or argument is not supported with version 1.0; \\"},{"line_number":21,"context_line":"  requires at least version 1.1"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"This only handles the aggregate set/list commands and could be used"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3fce034c_f816c1f1","line":20,"in_reply_to":"3fce034c_8d451a73","updated":"2019-04-15 12:21:49.000000000","message":"I think \"operation\" is correct (or at least sufficient): The aggregate set \"operation\" needs 1.1","commit_id":"a4da387b9f522364ca10ea585f3f3862dfcb2308"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"528ab30baedb877044b83b8f48dcb2db66236b01","unresolved":false,"context_lines":[{"line_number":17,"context_line":"we use it to improve the message so the user doesn\u0027t have to read"},{"line_number":18,"context_line":"the help of the command to figure out what they did wrong, e.g.:"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"  Operation or argument is not supported with version 1.0; \\"},{"line_number":21,"context_line":"  requires at least version 1.1"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"This only handles the aggregate set/list commands and could be used"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3fce034c_01feb5ad","line":20,"in_reply_to":"3fce034c_f816c1f1","updated":"2019-04-15 16:17:11.000000000","message":"Maybe I was just reading this as \u0027option or argument\u0027. We could still do more with named arguments for clarity, but yeah.","commit_id":"a4da387b9f522364ca10ea585f3f3862dfcb2308"}],"osc_placement/resources/aggregate.py":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"4b979cb3d256ba8c0524451c0935b7df1360284d","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        return parser"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @version.check(version.ge(\u00271.1\u0027), min_version\u003d\u00271.1\u0027)"},{"line_number":54,"context_line":"    def take_action(self, parsed_args):"},{"line_number":55,"context_line":"        http \u003d self.app.client_manager.placement"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fce034c_783e51db","line":53,"updated":"2019-04-15 13:08:23.000000000","message":"This looks having duplicate arguments.","commit_id":"a4da387b9f522364ca10ea585f3f3862dfcb2308"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"528ab30baedb877044b83b8f48dcb2db66236b01","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        return parser"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @version.check(version.ge(\u00271.1\u0027), min_version\u003d\u00271.1\u0027)"},{"line_number":54,"context_line":"    def take_action(self, parsed_args):"},{"line_number":55,"context_line":"        http \u003d self.app.client_manager.placement"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fce034c_411d9d0d","line":53,"in_reply_to":"3fce034c_783e51db","updated":"2019-04-15 16:17:11.000000000","message":"Sure, it looks that way, but ge is a function that lambda\u0027s an operator so trying to tease out what the function is (ge, lt, eq, etc) is beyond me at the moment.","commit_id":"a4da387b9f522364ca10ea585f3f3862dfcb2308"}],"osc_placement/version.py":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"4b979cb3d256ba8c0524451c0935b7df1360284d","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    return _op(operator.ne, b)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"def ge(b):"},{"line_number":61,"context_line":"    return _op(operator.ge, b)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"def gt(b):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fce034c_f35ee210","line":61,"range":{"start_line":60,"start_character":0,"end_line":61,"end_character":30},"updated":"2019-04-15 13:08:23.000000000","message":"I would change this to return\n\n   _op(operator.ge, b) or error_message","commit_id":"a4da387b9f522364ca10ea585f3f3862dfcb2308"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"4b979cb3d256ba8c0524451c0935b7df1360284d","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"def _compare(ver, *predicates, **kwargs):"},{"line_number":69,"context_line":"    func \u003d kwargs.get(\u0027op\u0027, all)"},{"line_number":70,"context_line":"    return func(p(ver) for p in predicates)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"def compare(ver, *predicates, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fce034c_f3e1022c","line":70,"updated":"2019-04-15 13:08:23.000000000","message":"and this to return\n\n   func(p(ver) is True for p in predicates) or error_messages","commit_id":"a4da387b9f522364ca10ea585f3f3862dfcb2308"}]}
