)]}'
{"monasca_common/monasca_query_language/aql_parser.py":[{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"5c47b63c339f6b97cf5e18cc2ba0f394455d3f64","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        return parse_result"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"def parse_group_expression(expression):"},{"line_number":104,"context_line":"    try:"},{"line_number":105,"context_line":"        result \u003d RuleExpressionParser(expression).parse()"},{"line_number":106,"context_line":"        result \u003d result[0].get_struct(\u0027group\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f231b9d_a3d7ebbf","line":103,"updated":"2017-06-12 19:29:30.000000000","message":"I think these might fit better in a different file, or perhaps the original result can be refactored to better suit the output you need? Why take the dictionary and split it into multiple returns?","commit_id":"fe9584f7bdecff84d66346628b18094bc2583adc"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"dfc6f265fd891919b90448451683c01a7a87d467","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        return parse_result"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"def parse_group_expression(expression):"},{"line_number":104,"context_line":"    try:"},{"line_number":105,"context_line":"        result \u003d RuleExpressionParser(expression).parse()"},{"line_number":106,"context_line":"        result \u003d result[0].get_struct(\u0027group\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f231b9d_de999d79","line":103,"in_reply_to":"7f231b9d_a3d7ebbf","updated":"2017-06-12 21:36:08.000000000","message":"I think returning a dictionary instead of multiple items is better. It will save a lot of trouble later on such as the order of the return items.","commit_id":"fe9584f7bdecff84d66346628b18094bc2583adc"},{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"6011e2f574be83984e6fd311f4bab0052c5bae9f","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        return parse_result"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"def parse_group_expression(expression):"},{"line_number":104,"context_line":"    try:"},{"line_number":105,"context_line":"        result \u003d RuleExpressionParser(expression).parse()"},{"line_number":106,"context_line":"        result \u003d result[0].get_struct(\u0027group\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f231b9d_74806b8c","line":103,"in_reply_to":"7f231b9d_a3d7ebbf","updated":"2017-06-13 17:48:40.000000000","message":"You have a good point. I think these are fairly useless, so I will get rid of them","commit_id":"fe9584f7bdecff84d66346628b18094bc2583adc"},{"author":{"_account_id":20033,"name":"Artur Basiak","email":"artur.basiak@ts.fujitsu.com","username":"abasiak"},"change_message_id":"c8509aa388255acedbcebab557741646b95c7471","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import pyparsing"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from monasca_common.monasca_query_language.query_structures import (Dimension,"},{"line_number":23,"context_line":"                                                                    MetricSelector,"},{"line_number":24,"context_line":"                                                                    LogicalExpression,"},{"line_number":25,"context_line":"                                                                    InvalidExpressionException,"},{"line_number":26,"context_line":"                                                                    SourceExpression,"},{"line_number":27,"context_line":"                                                                    TargetsExpression,"},{"line_number":28,"context_line":"                                                                    ExcludesExpression,"},{"line_number":29,"context_line":"                                                                    GroupByExpression,"},{"line_number":30,"context_line":"                                                                    Rule)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"COMMA \u003d pyparsing.Suppress(pyparsing.Literal(\",\"))"},{"line_number":33,"context_line":"LPAREN \u003d pyparsing.Suppress(pyparsing.Literal(\"(\"))"}],"source_content_type":"text/x-python","patch_set":10,"id":"7f231b9d_bc46ac7b","line":30,"range":{"start_line":22,"start_character":0,"end_line":30,"end_character":73},"updated":"2017-06-14 13:45:37.000000000","message":"according to the openstack standards you should import modules not objects: https://docs.openstack.org/developer/hacking/#imports","commit_id":"9f21a7c6aeef7b18ed1b01ac04968eab4626b77c"},{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"487c80bb9d8075afaf539431d24f208576b7d19f","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import pyparsing"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from monasca_common.monasca_query_language.query_structures import (Dimension,"},{"line_number":23,"context_line":"                                                                    MetricSelector,"},{"line_number":24,"context_line":"                                                                    LogicalExpression,"},{"line_number":25,"context_line":"                                                                    InvalidExpressionException,"},{"line_number":26,"context_line":"                                                                    SourceExpression,"},{"line_number":27,"context_line":"                                                                    TargetsExpression,"},{"line_number":28,"context_line":"                                                                    ExcludesExpression,"},{"line_number":29,"context_line":"                                                                    GroupByExpression,"},{"line_number":30,"context_line":"                                                                    Rule)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"COMMA \u003d pyparsing.Suppress(pyparsing.Literal(\",\"))"},{"line_number":33,"context_line":"LPAREN \u003d pyparsing.Suppress(pyparsing.Literal(\"(\"))"}],"source_content_type":"text/x-python","patch_set":10,"id":"7f231b9d_3bf17b96","line":30,"range":{"start_line":22,"start_character":0,"end_line":30,"end_character":73},"in_reply_to":"7f231b9d_bc46ac7b","updated":"2017-06-14 16:49:22.000000000","message":"Done","commit_id":"9f21a7c6aeef7b18ed1b01ac04968eab4626b77c"},{"author":{"_account_id":20033,"name":"Artur Basiak","email":"artur.basiak@ts.fujitsu.com","username":"abasiak"},"change_message_id":"c8509aa388255acedbcebab557741646b95c7471","unresolved":false,"context_lines":[{"line_number":86,"context_line":"group_by_expr \u003d group_by + pyparsing.delimitedList(dimension_name)"},{"line_number":87,"context_line":"group_by_expr.addParseAction(GroupByExpression)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"grammar \u003d pyparsing.Optional(source_expression) + pyparsing.Optional(targets_expression) + pyparsing.Optional(excludes_expression) + pyparsing.Optional(group_by_expr)"},{"line_number":90,"context_line":"grammar.addParseAction(Rule)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7f231b9d_e6000e04","line":89,"updated":"2017-06-14 13:45:37.000000000","message":"this line is to long. Please break the line","commit_id":"9f21a7c6aeef7b18ed1b01ac04968eab4626b77c"},{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"487c80bb9d8075afaf539431d24f208576b7d19f","unresolved":false,"context_lines":[{"line_number":86,"context_line":"group_by_expr \u003d group_by + pyparsing.delimitedList(dimension_name)"},{"line_number":87,"context_line":"group_by_expr.addParseAction(GroupByExpression)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"grammar \u003d pyparsing.Optional(source_expression) + pyparsing.Optional(targets_expression) + pyparsing.Optional(excludes_expression) + pyparsing.Optional(group_by_expr)"},{"line_number":90,"context_line":"grammar.addParseAction(Rule)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7f231b9d_1be11f2b","line":89,"in_reply_to":"7f231b9d_e6000e04","updated":"2017-06-14 16:49:22.000000000","message":"Done","commit_id":"9f21a7c6aeef7b18ed1b01ac04968eab4626b77c"}],"monasca_common/monasca_query_language/query_structures.py":[{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"5c47b63c339f6b97cf5e18cc2ba0f394455d3f64","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        return self.__repr__()"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class QueryException(Exception):"},{"line_number":99,"context_line":"    pass"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7f231b9d_634553b3","line":98,"range":{"start_line":98,"start_character":6,"end_line":98,"end_character":20},"updated":"2017-06-12 19:29:30.000000000","message":"This name doesn\u0027t make sense to me, the query is at a different level. This code only deals with parsing the expression, regardless of where it comes from.","commit_id":"fe9584f7bdecff84d66346628b18094bc2583adc"},{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"6011e2f574be83984e6fd311f4bab0052c5bae9f","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        return self.__repr__()"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class QueryException(Exception):"},{"line_number":99,"context_line":"    pass"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7f231b9d_c5ad2832","line":98,"range":{"start_line":98,"start_character":6,"end_line":98,"end_character":20},"in_reply_to":"7f231b9d_634553b3","updated":"2017-06-13 17:48:40.000000000","message":"Done","commit_id":"fe9584f7bdecff84d66346628b18094bc2583adc"},{"author":{"_account_id":20033,"name":"Artur Basiak","email":"artur.basiak@ts.fujitsu.com","username":"abasiak"},"change_message_id":"c8509aa388255acedbcebab557741646b95c7471","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class Dimension(object):"},{"line_number":20,"context_line":"    def __init__(self, tokens):"},{"line_number":21,"context_line":"        self.args \u003d tokens"},{"line_number":22,"context_line":"        self.key \u003d tokens[0]"},{"line_number":23,"context_line":"        self.operator \u003d tokens[1]"}],"source_content_type":"text/x-python","patch_set":10,"id":"7f231b9d_26196621","line":20,"range":{"start_line":20,"start_character":23,"end_line":20,"end_character":29},"updated":"2017-06-14 13:45:37.000000000","message":"isn\u0027t better to pass *args here?\nThe same question for other classes in this module.","commit_id":"9f21a7c6aeef7b18ed1b01ac04968eab4626b77c"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"99249847fe19f84968e54c6f916b87a559b32376","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class Dimension(object):"},{"line_number":20,"context_line":"    def __init__(self, tokens):"},{"line_number":21,"context_line":"        self.args \u003d tokens"},{"line_number":22,"context_line":"        self.key \u003d tokens[0]"},{"line_number":23,"context_line":"        self.operator \u003d tokens[1]"}],"source_content_type":"text/x-python","patch_set":10,"id":"7f231b9d_3b1a9b6e","line":20,"range":{"start_line":20,"start_character":23,"end_line":20,"end_character":29},"in_reply_to":"7f231b9d_26196621","updated":"2017-06-14 16:30:08.000000000","message":"Why is *args better here?","commit_id":"9f21a7c6aeef7b18ed1b01ac04968eab4626b77c"},{"author":{"_account_id":20033,"name":"Artur Basiak","email":"artur.basiak@ts.fujitsu.com","username":"abasiak"},"change_message_id":"c8509aa388255acedbcebab557741646b95c7471","unresolved":false,"context_lines":[{"line_number":23,"context_line":"        self.operator \u003d tokens[1]"},{"line_number":24,"context_line":"        self.value \u003d tokens[2]"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def __repr__(self):"},{"line_number":27,"context_line":"        return \"Dimension(key\u003d{},operator\u003d\u0027{}\u0027,value\u003d{})\".format(self.key, self.operator, self.value)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __str__(self):"},{"line_number":30,"context_line":"        return self.__repr__()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class MetricSelector(object):"}],"source_content_type":"text/x-python","patch_set":10,"id":"7f231b9d_260046ab","line":30,"range":{"start_line":26,"start_character":3,"end_line":30,"end_character":30},"updated":"2017-06-14 13:45:37.000000000","message":"I don\u0027t like this. __repr__ should contains printable \nrepresentation of the object and __str__ should be a nicely \nprintable representation of an object.\nSo maybe __repr__ should return a string which contains only object like: \n   def __repr__(self):\n      return \"{},{},{}\".format(self.key, self.operator, self.value)\n\nand __str__() should return the full string with description.\n\nThe same comment for other classes.","commit_id":"9f21a7c6aeef7b18ed1b01ac04968eab4626b77c"},{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"487c80bb9d8075afaf539431d24f208576b7d19f","unresolved":false,"context_lines":[{"line_number":23,"context_line":"        self.operator \u003d tokens[1]"},{"line_number":24,"context_line":"        self.value \u003d tokens[2]"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def __repr__(self):"},{"line_number":27,"context_line":"        return \"Dimension(key\u003d{},operator\u003d\u0027{}\u0027,value\u003d{})\".format(self.key, self.operator, self.value)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __str__(self):"},{"line_number":30,"context_line":"        return self.__repr__()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class MetricSelector(object):"}],"source_content_type":"text/x-python","patch_set":10,"id":"7f231b9d_bbfd8b6f","line":30,"range":{"start_line":26,"start_character":3,"end_line":30,"end_character":30},"in_reply_to":"7f231b9d_260046ab","updated":"2017-06-14 16:49:22.000000000","message":"Done","commit_id":"9f21a7c6aeef7b18ed1b01ac04968eab4626b77c"},{"author":{"_account_id":20033,"name":"Artur Basiak","email":"artur.basiak@ts.fujitsu.com","username":"abasiak"},"change_message_id":"c8509aa388255acedbcebab557741646b95c7471","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        return self.__repr__()"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class InvalidExpressionException(Exception):"},{"line_number":99,"context_line":"    pass"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"class SourceExpression(object):"}],"source_content_type":"text/x-python","patch_set":10,"id":"7f231b9d_66407ea6","line":99,"range":{"start_line":98,"start_character":0,"end_line":99,"end_character":8},"updated":"2017-06-14 13:45:37.000000000","message":"Maybe this should be moved to separate module like: /monasca_common/monasca_query_language/exceptions.py","commit_id":"9f21a7c6aeef7b18ed1b01ac04968eab4626b77c"},{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"487c80bb9d8075afaf539431d24f208576b7d19f","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        return self.__repr__()"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class InvalidExpressionException(Exception):"},{"line_number":99,"context_line":"    pass"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"class SourceExpression(object):"}],"source_content_type":"text/x-python","patch_set":10,"id":"7f231b9d_5bcf9755","line":99,"range":{"start_line":98,"start_character":0,"end_line":99,"end_character":8},"in_reply_to":"7f231b9d_66407ea6","updated":"2017-06-14 16:49:22.000000000","message":"Done","commit_id":"9f21a7c6aeef7b18ed1b01ac04968eab4626b77c"},{"author":{"_account_id":20033,"name":"Artur Basiak","email":"artur.basiak@ts.fujitsu.com","username":"abasiak"},"change_message_id":"c8509aa388255acedbcebab557741646b95c7471","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        return result"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    def __repr__(self):"},{"line_number":199,"context_line":"        return \"Rule(source\u003d{},target\u003d{},excludes\u003d{},group_by\u003d{})\".format(self.source, self.target, self.excludes, self.group_by)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def __str__(self):"},{"line_number":202,"context_line":"        return self.__repr__()"}],"source_content_type":"text/x-python","patch_set":10,"id":"7f231b9d_a60b367b","line":199,"updated":"2017-06-14 13:45:37.000000000","message":"line to long, please break it","commit_id":"9f21a7c6aeef7b18ed1b01ac04968eab4626b77c"},{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"487c80bb9d8075afaf539431d24f208576b7d19f","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        return result"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    def __repr__(self):"},{"line_number":199,"context_line":"        return \"Rule(source\u003d{},target\u003d{},excludes\u003d{},group_by\u003d{})\".format(self.source, self.target, self.excludes, self.group_by)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def __str__(self):"},{"line_number":202,"context_line":"        return self.__repr__()"}],"source_content_type":"text/x-python","patch_set":10,"id":"7f231b9d_3bd85b1c","line":199,"in_reply_to":"7f231b9d_a60b367b","updated":"2017-06-14 16:49:22.000000000","message":"Done","commit_id":"9f21a7c6aeef7b18ed1b01ac04968eab4626b77c"}],"monasca_common/tests/test_monasca_query_language.py":[{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"83eb32a8e35de7aa5489be5309dbe030a59cb5c4","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from monasca_common.monasca_query_language import query_structures"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class TestKafkaProducer(base.BaseTestCase):"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def test_parse_group_expression(self):"},{"line_number":26,"context_line":"        expressions \u003d ["}],"source_content_type":"text/x-python","patch_set":8,"id":"7f231b9d_e35ba32b","line":23,"range":{"start_line":23,"start_character":6,"end_line":23,"end_character":23},"updated":"2017-06-12 19:06:16.000000000","message":"need a different name?","commit_id":"fe9584f7bdecff84d66346628b18094bc2583adc"},{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"6011e2f574be83984e6fd311f4bab0052c5bae9f","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from monasca_common.monasca_query_language import query_structures"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class TestKafkaProducer(base.BaseTestCase):"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def test_parse_group_expression(self):"},{"line_number":26,"context_line":"        expressions \u003d ["}],"source_content_type":"text/x-python","patch_set":8,"id":"7f231b9d_f4d0fbcb","line":23,"range":{"start_line":23,"start_character":6,"end_line":23,"end_character":23},"in_reply_to":"7f231b9d_e35ba32b","updated":"2017-06-13 17:48:40.000000000","message":"Done","commit_id":"fe9584f7bdecff84d66346628b18094bc2583adc"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"5c47b63c339f6b97cf5e18cc2ba0f394455d3f64","unresolved":false,"context_lines":[{"line_number":31,"context_line":"            \"group by __severity__\","},{"line_number":32,"context_line":"            \"excluding {__severity__\u003dHIGH} group by __severity__\","},{"line_number":33,"context_line":"            \"excluding {__severity__\u003dHIGH, hostname\u003dhost1} group by __severity__, hostname\","},{"line_number":34,"context_line":"            \"group by excluding\""},{"line_number":35,"context_line":"        ]"},{"line_number":36,"context_line":"        negative_expressions \u003d ["},{"line_number":37,"context_line":"            \"group by hostname excluding {__metricName__\u003dmetric_two}\","}],"source_content_type":"text/x-python","patch_set":8,"id":"7f231b9d_e32cc348","line":34,"updated":"2017-06-12 19:29:30.000000000","message":"Maybe a comment on this one explaining why it\u0027s allowed?","commit_id":"fe9584f7bdecff84d66346628b18094bc2583adc"},{"author":{"_account_id":22157,"name":"Andrea Adams","email":"aadams@hpe.com","username":"andrea.adams"},"change_message_id":"6011e2f574be83984e6fd311f4bab0052c5bae9f","unresolved":false,"context_lines":[{"line_number":31,"context_line":"            \"group by __severity__\","},{"line_number":32,"context_line":"            \"excluding {__severity__\u003dHIGH} group by __severity__\","},{"line_number":33,"context_line":"            \"excluding {__severity__\u003dHIGH, hostname\u003dhost1} group by __severity__, hostname\","},{"line_number":34,"context_line":"            \"group by excluding\""},{"line_number":35,"context_line":"        ]"},{"line_number":36,"context_line":"        negative_expressions \u003d ["},{"line_number":37,"context_line":"            \"group by hostname excluding {__metricName__\u003dmetric_two}\","}],"source_content_type":"text/x-python","patch_set":8,"id":"7f231b9d_f49ebb05","line":34,"in_reply_to":"7f231b9d_e32cc348","updated":"2017-06-13 17:48:40.000000000","message":"Done","commit_id":"fe9584f7bdecff84d66346628b18094bc2583adc"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"83eb32a8e35de7aa5489be5309dbe030a59cb5c4","unresolved":false,"context_lines":[{"line_number":161,"context_line":"            {\"__metricName__\": \"metric_one\", \"hostname\": \"host_one\"},"},{"line_number":162,"context_line":"            {\"__metricName__\": \"metric_one\", \"hostname\": \"host_one\", \"region\": \"region_one\"},"},{"line_number":163,"context_line":"        ]"},{"line_number":164,"context_line":"        for i in range(len(expressions)):"},{"line_number":165,"context_line":"            test_matchers \u003d aql_parser.parse_silence_expression(expressions[i])"},{"line_number":166,"context_line":"            self.assertEqual(test_matchers, matchers[i])"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7f231b9d_c3ae67e6","line":164,"range":{"start_line":164,"start_character":17,"end_line":164,"end_character":22},"updated":"2017-06-12 19:06:16.000000000","message":"I prefer xrange here","commit_id":"fe9584f7bdecff84d66346628b18094bc2583adc"},{"author":{"_account_id":14517,"name":"Ryan Brandt","email":"ryan.brandt@hpe.com","username":"ryan-brandt"},"change_message_id":"f2d35cac588798c32de226a4dc18f9ddb6eb9781","unresolved":false,"context_lines":[{"line_number":161,"context_line":"            {\"__metricName__\": \"metric_one\", \"hostname\": \"host_one\"},"},{"line_number":162,"context_line":"            {\"__metricName__\": \"metric_one\", \"hostname\": \"host_one\", \"region\": \"region_one\"},"},{"line_number":163,"context_line":"        ]"},{"line_number":164,"context_line":"        for i in range(len(expressions)):"},{"line_number":165,"context_line":"            test_matchers \u003d aql_parser.parse_silence_expression(expressions[i])"},{"line_number":166,"context_line":"            self.assertEqual(test_matchers, matchers[i])"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7f231b9d_4305b7c1","line":164,"range":{"start_line":164,"start_character":17,"end_line":164,"end_character":22},"in_reply_to":"7f231b9d_c3ae67e6","updated":"2017-06-12 19:10:20.000000000","message":"I would as well, but range is python 3 compatible so it should probably stay","commit_id":"fe9584f7bdecff84d66346628b18094bc2583adc"}],"test-requirements.txt":[{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"0b401f58b43af27f403e239af9260038355bdd9f","unresolved":false,"context_lines":[{"line_number":12,"context_line":"mox\u003e\u003d0.5.3 # Apache-2.0"},{"line_number":13,"context_line":"oslotest\u003e\u003d1.10.0 # Apache-2.0"},{"line_number":14,"context_line":"os-testr\u003e\u003d0.8.0 # Apache-2.0"},{"line_number":15,"context_line":"pyparsing\u003e\u003d2.1.0 # MIT"},{"line_number":16,"context_line":"python-subunit\u003e\u003d0.0.18 # Apache-2.0/BSD"},{"line_number":17,"context_line":"testrepository\u003e\u003d0.0.18 # Apache-2.0/BSD"},{"line_number":18,"context_line":"testscenarios\u003e\u003d0.4 # Apache-2.0/BSD"}],"source_content_type":"text/plain","patch_set":7,"id":"7f231b9d_88c9ae79","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":9},"updated":"2017-06-12 18:45:37.000000000","message":"should this be in requirements.txt?","commit_id":"eda77cc1c4c400743e01e2f564e52c4bc80ae7da"}]}
