)]}'
{"aodhclient/utils.py":[{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"a69001b4327f1579c5f3e74a98fd6f5c139b374a","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                     if v is not None])"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"def cli_to_array(cli_query):"},{"line_number":141,"context_line":"    \"\"\"Convert CLI list of queries to the Python API format."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    This will convert the following:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5aef4532_8f166eef","line":140,"updated":"2016-03-08 16:09:19.000000000","message":"stole from ceilometerclient","commit_id":"f0ededb5686106285435e5a00c9daa99609c8c89"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"babedf59344281f6647f05e9ed28e6e21f5fc940","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    def split_by_op(query):"},{"line_number":156,"context_line":"        \"\"\"Split a single query string to field, operator, value.\"\"\""},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        def _value_error(message):"},{"line_number":159,"context_line":"            raise ValueError(\u0027invalid query %(query)s: missing %(message)s\u0027 %"},{"line_number":160,"context_line":"                             {\u0027query\u0027: query, \u0027message\u0027: message})"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        try:"},{"line_number":163,"context_line":"            field, q_operator, value \u003d OP_SPLIT_RE.split(query, maxsplit\u003d1)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_592ec643","line":160,"range":{"start_line":158,"start_character":8,"end_line":160,"end_character":66},"updated":"2016-03-09 11:39:38.000000000","message":"No need for a function, just use a string and the % operator as needed.","commit_id":"f85ee20e73a9db31971e7b145cf2d78106c7ba16"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"babedf59344281f6647f05e9ed28e6e21f5fc940","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    if cli_query is None:"},{"line_number":153,"context_line":"        return None"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def split_by_op(query):"},{"line_number":156,"context_line":"        \"\"\"Split a single query string to field, operator, value.\"\"\""},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        def _value_error(message):"},{"line_number":159,"context_line":"            raise ValueError(\u0027invalid query %(query)s: missing %(message)s\u0027 %"},{"line_number":160,"context_line":"                             {\u0027query\u0027: query, \u0027message\u0027: message})"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        try:"},{"line_number":163,"context_line":"            field, q_operator, value \u003d OP_SPLIT_RE.split(query, maxsplit\u003d1)"},{"line_number":164,"context_line":"        except ValueError:"},{"line_number":165,"context_line":"            _value_error(\u0027operator\u0027)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        if not len(field):"},{"line_number":168,"context_line":"            _value_error(\u0027field\u0027)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        if not len(value):"},{"line_number":171,"context_line":"            _value_error(\u0027value\u0027)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        return field.strip(), q_operator, value.strip()"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def split_by_data_type(query_value):"},{"line_number":176,"context_line":"        frags \u003d DATA_TYPE_RE.match(query_value)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_f98b5266","line":173,"range":{"start_line":155,"start_character":0,"end_line":173,"end_character":55},"updated":"2016-03-09 11:39:38.000000000","message":"There is no reason to define a closure here, put that in top level please.","commit_id":"f85ee20e73a9db31971e7b145cf2d78106c7ba16"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"babedf59344281f6647f05e9ed28e6e21f5fc940","unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        return field.strip(), q_operator, value.strip()"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def split_by_data_type(query_value):"},{"line_number":176,"context_line":"        frags \u003d DATA_TYPE_RE.match(query_value)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        # The second match is the separator. Return a list without it if"},{"line_number":179,"context_line":"        # a type identifier was found."},{"line_number":180,"context_line":"        return frags.group(1, 3) if frags else None"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    opts \u003d []"},{"line_number":183,"context_line":"    queries \u003d cli_query.split(\u0027;\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_19e6fe43","line":180,"range":{"start_line":175,"start_character":4,"end_line":180,"end_character":51},"updated":"2016-03-09 11:39:38.000000000","message":"You really don\u0027t need a function, and even less a closure here, c\u0027mon!","commit_id":"f85ee20e73a9db31971e7b145cf2d78106c7ba16"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"7a0b67f4ee35d24489ddc70ef0952186b5415bed","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            raise ValueError(\u0027Missing value in query %s\u0027 % q)"},{"line_number":164,"context_line":"        opt \u003d dict(field\u003dfield, op\u003dOP_LOOKUP[q_operator])"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        type_value \u003d type_value.split(\u0027::\u0027)"},{"line_number":167,"context_line":"        if len(type_value) \u003d\u003d 1:"},{"line_number":168,"context_line":"            opt[\u0027value\u0027] \u003d type_value[0]"},{"line_number":169,"context_line":"            opt[\u0027type\u0027] \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"3afc51ec_2b516563","line":166,"range":{"start_line":166,"start_character":8,"end_line":166,"end_character":43},"updated":"2016-03-11 12:27:09.000000000","message":"opt[\u0027value\u0027], _, opt[\u0027type\u0027] \u003d type_value.partition(\u0027::\u0027)","commit_id":"4aa85baef884b678e5307e7268194cc7501b1fdc"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"79d9fe52a37ab5b2aa615d9a6ae71b0f081c9c86","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            raise ValueError(\u0027Missing value in query %s\u0027 % q)"},{"line_number":164,"context_line":"        opt \u003d dict(field\u003dfield, op\u003dOP_LOOKUP[q_operator])"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        type_value \u003d type_value.split(\u0027::\u0027)"},{"line_number":167,"context_line":"        if len(type_value) \u003d\u003d 1:"},{"line_number":168,"context_line":"            opt[\u0027value\u0027] \u003d type_value[0]"},{"line_number":169,"context_line":"            opt[\u0027type\u0027] \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"3afc51ec_de2204b9","line":166,"range":{"start_line":166,"start_character":8,"end_line":166,"end_character":43},"in_reply_to":"3afc51ec_2b516563","updated":"2016-03-14 01:20:46.000000000","message":"cooool ;-)","commit_id":"4aa85baef884b678e5307e7268194cc7501b1fdc"}],"aodhclient/v2/alarm_cli.py":[{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"9be8f1b86700da607f62ae0993d72be8645d3c52","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        common_group \u003d parser.add_argument_group(\u0027common alarm rules\u0027)"},{"line_number":154,"context_line":"        common_group.add_argument("},{"line_number":155,"context_line":"            \u0027--query\u0027, metavar\u003d\u0027\u003cQUERY\u003e\u0027, dest\u003d\u0027query\u0027,"},{"line_number":156,"context_line":"            help\u003d\u0027For threshold or event type alarms:\u0027"},{"line_number":157,"context_line":"                 \u0027key[op]data_type::value; list. data_type is optional, \u0027"},{"line_number":158,"context_line":"                 \u0027but if supplied must be string, integer, float, or boolean. \u0027"},{"line_number":159,"context_line":"                 \u0027Used by threshold and event alarms;\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_b0856fae","line":156,"range":{"start_line":156,"start_character":52,"end_line":156,"end_character":54},"updated":"2016-03-09 06:44:32.000000000","message":"should have a space at the end of this line","commit_id":"54f8723ac5ca99f80368f37c4d6924251b60cfd7"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"cf1c9536c2937eb725f57cd6c066fc21c54f4b6e","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        common_group \u003d parser.add_argument_group(\u0027common alarm rules\u0027)"},{"line_number":154,"context_line":"        common_group.add_argument("},{"line_number":155,"context_line":"            \u0027--query\u0027, metavar\u003d\u0027\u003cQUERY\u003e\u0027, dest\u003d\u0027query\u0027,"},{"line_number":156,"context_line":"            help\u003d\u0027For threshold or event type alarms:\u0027"},{"line_number":157,"context_line":"                 \u0027key[op]data_type::value; list. data_type is optional, \u0027"},{"line_number":158,"context_line":"                 \u0027but if supplied must be string, integer, float, or boolean. \u0027"},{"line_number":159,"context_line":"                 \u0027Used by threshold and event alarms;\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_660ded36","line":156,"range":{"start_line":156,"start_character":52,"end_line":156,"end_character":54},"in_reply_to":"5aef4532_b0856fae","updated":"2016-03-09 07:13:27.000000000","message":"Done","commit_id":"54f8723ac5ca99f80368f37c4d6924251b60cfd7"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"9be8f1b86700da607f62ae0993d72be8645d3c52","unresolved":false,"context_lines":[{"line_number":156,"context_line":"            help\u003d\u0027For threshold or event type alarms:\u0027"},{"line_number":157,"context_line":"                 \u0027key[op]data_type::value; list. data_type is optional, \u0027"},{"line_number":158,"context_line":"                 \u0027but if supplied must be string, integer, float, or boolean. \u0027"},{"line_number":159,"context_line":"                 \u0027Used by threshold and event alarms;\u0027"},{"line_number":160,"context_line":"                 \u0027For gnocchi_aggregation_by_resources_threshold type alarms:\u0027"},{"line_number":161,"context_line":"                 \u0027need to specify a complex query json string, like this:\u0027"},{"line_number":162,"context_line":"                 \u0027{\"and\": [{\"\u003d\": {\"ended_at\": null}}, ...]}.\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_b073afe6","line":159,"range":{"start_line":159,"start_character":52,"end_line":159,"end_character":54},"updated":"2016-03-09 06:44:32.000000000","message":"should have a \\n or space at the end of this line","commit_id":"54f8723ac5ca99f80368f37c4d6924251b60cfd7"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"cf1c9536c2937eb725f57cd6c066fc21c54f4b6e","unresolved":false,"context_lines":[{"line_number":156,"context_line":"            help\u003d\u0027For threshold or event type alarms:\u0027"},{"line_number":157,"context_line":"                 \u0027key[op]data_type::value; list. data_type is optional, \u0027"},{"line_number":158,"context_line":"                 \u0027but if supplied must be string, integer, float, or boolean. \u0027"},{"line_number":159,"context_line":"                 \u0027Used by threshold and event alarms;\u0027"},{"line_number":160,"context_line":"                 \u0027For gnocchi_aggregation_by_resources_threshold type alarms:\u0027"},{"line_number":161,"context_line":"                 \u0027need to specify a complex query json string, like this:\u0027"},{"line_number":162,"context_line":"                 \u0027{\"and\": [{\"\u003d\": {\"ended_at\": null}}, ...]}.\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_c63b21d0","line":159,"range":{"start_line":159,"start_character":52,"end_line":159,"end_character":54},"in_reply_to":"5aef4532_b073afe6","updated":"2016-03-09 07:13:27.000000000","message":"Hi Lianhao, I have tried, but it cannot works in the display of cli ;-(","commit_id":"54f8723ac5ca99f80368f37c4d6924251b60cfd7"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"9be8f1b86700da607f62ae0993d72be8645d3c52","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                 \u0027Used by threshold and event alarms;\u0027"},{"line_number":160,"context_line":"                 \u0027For gnocchi_aggregation_by_resources_threshold type alarms:\u0027"},{"line_number":161,"context_line":"                 \u0027need to specify a complex query json string, like this:\u0027"},{"line_number":162,"context_line":"                 \u0027{\"and\": [{\"\u003d\": {\"ended_at\": null}}, ...]}.\u0027)"},{"line_number":163,"context_line":"        common_group.add_argument("},{"line_number":164,"context_line":"            \u0027--comparison-operator\u0027, metavar\u003d\u0027\u003cOPERATOR\u003e\u0027,"},{"line_number":165,"context_line":"            dest\u003d\u0027comparison_operator\u0027, choices\u003dALARM_OPERATORS,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_3351690f","line":162,"range":{"start_line":162,"start_character":54,"end_line":162,"end_character":62},"updated":"2016-03-09 06:44:32.000000000","message":"nit, is it possible to adjust the output of the help string, by adding some space or \\n or \\t to help the user to read? Current it\u0027s too messy.","commit_id":"54f8723ac5ca99f80368f37c4d6924251b60cfd7"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"cf1c9536c2937eb725f57cd6c066fc21c54f4b6e","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                 \u0027Used by threshold and event alarms;\u0027"},{"line_number":160,"context_line":"                 \u0027For gnocchi_aggregation_by_resources_threshold type alarms:\u0027"},{"line_number":161,"context_line":"                 \u0027need to specify a complex query json string, like this:\u0027"},{"line_number":162,"context_line":"                 \u0027{\"and\": [{\"\u003d\": {\"ended_at\": null}}, ...]}.\u0027)"},{"line_number":163,"context_line":"        common_group.add_argument("},{"line_number":164,"context_line":"            \u0027--comparison-operator\u0027, metavar\u003d\u0027\u003cOPERATOR\u003e\u0027,"},{"line_number":165,"context_line":"            dest\u003d\u0027comparison_operator\u0027, choices\u003dALARM_OPERATORS,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_a636d5e4","line":162,"range":{"start_line":162,"start_character":54,"end_line":162,"end_character":62},"in_reply_to":"5aef4532_3351690f","updated":"2016-03-09 07:13:27.000000000","message":"Done","commit_id":"54f8723ac5ca99f80368f37c4d6924251b60cfd7"}]}
