)]}'
{"oslo_utils/specs_matcher.py":[{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"6dd7b627c15160ea068b19cc61b9342f921106b7","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    \"\"\"Match a given value to a given spec DSL.\"\"\""},{"line_number":83,"context_line":"    expr \u003d make_grammar()"},{"line_number":84,"context_line":"    try:"},{"line_number":85,"context_line":"        tree \u003d expr.parseString(spec)"},{"line_number":86,"context_line":"    except pyparsing.ParseException:"},{"line_number":87,"context_line":"        tree \u003d [spec]"},{"line_number":88,"context_line":"    if len(tree) \u003d\u003d 1:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_7c70bc40","line":85,"updated":"2016-07-12 11:59:42.000000000","message":"I approve of this change of variable-name!","commit_id":"d8c6ae1e9fca6ffec9075a10e551b819350c06cc"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"6dd7b627c15160ea068b19cc61b9342f921106b7","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        if (isinstance(cmp_value, str)"},{"line_number":94,"context_line":"                or not isinstance(cmp_value, collections.Iterable)):"},{"line_number":95,"context_line":"            raise TypeError(\"\u003call-in\u003e must compare with a list literal\""},{"line_number":96,"context_line":"                            \" string, EG \\\"%s\\\"\" % ([\u0027aes\u0027, \u0027mmx\u0027],))"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    op \u003d op_methods[tree[0]]"},{"line_number":99,"context_line":"    return op(cmp_value, *tree[1:])"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_dc88d024","line":96,"updated":"2016-07-12 11:59:42.000000000","message":"Nit: the abbreviation \"e.g.\" is usually written in lowercase.","commit_id":"d8c6ae1e9fca6ffec9075a10e551b819350c06cc"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"3f77b6d90caeab54450078f6b7ef351da5d1ebcd","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        return tree[0] \u003d\u003d cmp_value"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    if tree[0] \u003d\u003d \u0027\u003call-in\u003e\u0027:"},{"line_number":91,"context_line":"        cmp_value \u003d ast.literal_eval(cmp_value)"},{"line_number":92,"context_line":"        if not isinstance(cmp_value, list):"},{"line_number":93,"context_line":"            raise TypeError(\"\u003call-in\u003e must compare with a list literal\""},{"line_number":94,"context_line":"                            \" string, EG \\\"%s\\\"\" % ([\u0027aes\u0027, \u0027mmx\u0027],))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_7406101d","line":91,"updated":"2016-07-12 13:18:25.000000000","message":"I\u0027d prefer it if the cast/typecheck code were in the implementation of the all-in operator. That way it would match the implementation of \u003e, \u003d\u003d etc, and we\u0027d keep the evaluator as simple and clean as possible.","commit_id":"a3795e59c38665a2bc7a037a22fae4371b674778"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"ae46e1f12b57bf95394b29f01f252da7a7588b02","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from pyparsing import Regex"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"def _all_in(x, *y):"},{"line_number":26,"context_line":"    x \u003d ast.literal_eval(x)"},{"line_number":27,"context_line":"    if not isinstance(x, list):"},{"line_number":28,"context_line":"        raise TypeError(\"\u003call-in\u003e must compare with a list literal\""}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_1fbdffd7","line":25,"updated":"2016-08-23 23:21:01.000000000","message":"A docstring would be nice","commit_id":"fdc96a7aa80a6c2f24bdbb17858813e7c5dd3c5e"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"adc40a4c29c741474a48876010abd8e7646a67e6","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"def _all_in(x, *y):"},{"line_number":26,"context_line":"    x \u003d ast.literal_eval(x)"},{"line_number":27,"context_line":"    if not isinstance(x, list):"},{"line_number":28,"context_line":"        raise TypeError(\"\u003call-in\u003e must compare with a list literal\""},{"line_number":29,"context_line":"                        \" string, EG \\\"%s\\\"\" % ([\u0027aes\u0027, \u0027mmx\u0027],))"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_3a274fb7","line":26,"updated":"2016-07-12 13:53:10.000000000","message":"if x is not a string, an exception will be raised.","commit_id":"fdc96a7aa80a6c2f24bdbb17858813e7c5dd3c5e"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"01c43151361238d9b0be7792c648679c49f5266a","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"def _all_in(x, *y):"},{"line_number":26,"context_line":"    x \u003d ast.literal_eval(x)"},{"line_number":27,"context_line":"    if not isinstance(x, list):"},{"line_number":28,"context_line":"        raise TypeError(\"\u003call-in\u003e must compare with a list literal\""},{"line_number":29,"context_line":"                        \" string, EG \\\"%s\\\"\" % ([\u0027aes\u0027, \u0027mmx\u0027],))"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_6bfbcb7b","line":26,"in_reply_to":"1aa78d24_3a274fb7","updated":"2016-07-12 14:50:59.000000000","message":"Yep, I\u0027m happy with that","commit_id":"fdc96a7aa80a6c2f24bdbb17858813e7c5dd3c5e"},{"author":{"_account_id":9459,"name":".Haifeng Yan","email":"yanheven@qq.com","username":"yan"},"change_message_id":"7771eeed91386fdc2780b8c473651628e9d83df2","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"def _all_in(x, *y):"},{"line_number":26,"context_line":"    x \u003d ast.literal_eval(x)"},{"line_number":27,"context_line":"    if not isinstance(x, list):"},{"line_number":28,"context_line":"        raise TypeError(\"\u003call-in\u003e must compare with a list literal\""},{"line_number":29,"context_line":"                        \" string, EG \\\"%s\\\"\" % ([\u0027aes\u0027, \u0027mmx\u0027],))"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_f5be1163","line":26,"in_reply_to":"1aa78d24_3a274fb7","updated":"2016-07-14 07:32:58.000000000","message":"if x is not a node or a string,some works should be done for exception","commit_id":"fdc96a7aa80a6c2f24bdbb17858813e7c5dd3c5e"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"ae46e1f12b57bf95394b29f01f252da7a7588b02","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    x \u003d ast.literal_eval(x)"},{"line_number":27,"context_line":"    if not isinstance(x, list):"},{"line_number":28,"context_line":"        raise TypeError(\"\u003call-in\u003e must compare with a list literal\""},{"line_number":29,"context_line":"                        \" string, EG \\\"%s\\\"\" % ([\u0027aes\u0027, \u0027mmx\u0027],))"},{"line_number":30,"context_line":"    return all(val in x for val in y)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_ffbf43cd","line":29,"updated":"2016-08-23 23:21:01.000000000","message":"nit: s/EG/for example/","commit_id":"fdc96a7aa80a6c2f24bdbb17858813e7c5dd3c5e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f56b7bee5a008fea91f411e882f3026c19ab2459","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    if not isinstance(x, list):"},{"line_number":28,"context_line":"        raise TypeError(\"\u003call-in\u003e must compare with a list literal\""},{"line_number":29,"context_line":"                        \" string, EG \\\"%s\\\"\" % ([\u0027aes\u0027, \u0027mmx\u0027],))"},{"line_number":30,"context_line":"    return all(val in x for val in y)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"op_methods \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5da102_1f908794","line":30,"updated":"2016-11-02 22:26:09.000000000","message":"it would be easier for me to understand the intent of this expression by converting to sets and using \u003c\u003d.","commit_id":"fdc96a7aa80a6c2f24bdbb17858813e7c5dd3c5e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d795dd17ff1cb335981e7bbb7d22476b532c961e","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    if not isinstance(x, list):"},{"line_number":28,"context_line":"        raise TypeError(\"\u003call-in\u003e must compare with a list literal\""},{"line_number":29,"context_line":"                        \" string, EG \\\"%s\\\"\" % ([\u0027aes\u0027, \u0027mmx\u0027],))"},{"line_number":30,"context_line":"    return all(val in x for val in y)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"op_methods \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_8a4aa524","line":30,"in_reply_to":"ba5da102_1f908794","updated":"2016-11-10 15:16:07.000000000","message":"this\n\n return set(y) \u003c\u003d set(x)\n\nworked.","commit_id":"fdc96a7aa80a6c2f24bdbb17858813e7c5dd3c5e"}],"oslo_utils/tests/test_specs_matcher.py":[{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"6dd7b627c15160ea068b19cc61b9342f921106b7","unresolved":false,"context_lines":[{"line_number":364,"context_line":"            value\u003d\u0027aes\u0027,"},{"line_number":365,"context_line":"            req\u003d\u0027\u003call-in\u003e aes\u0027)"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"    def test_specs_errors_onechar_with_op_allin(self):"},{"line_number":368,"context_line":"        self.assertRaises("},{"line_number":369,"context_line":"            TypeError,"},{"line_number":370,"context_line":"            specs_matcher.match,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_bcf34472","line":367,"updated":"2016-07-12 11:59:42.000000000","message":"I\u0027m confused - why should this raise a TypeError?","commit_id":"d8c6ae1e9fca6ffec9075a10e551b819350c06cc"}]}
