)]}'
{"ceilometer/api/controllers/v2.py":[{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"7201c4d2f0029e6a673fe6050f90a1988597241f","unresolved":false,"context_lines":[{"line_number":246,"context_line":"                stamp[\u0027start_timestamp_op\u0027] \u003d i.op"},{"line_number":247,"context_line":"            else:"},{"line_number":248,"context_line":"                LOG.warn(\u0027_query_to_kwargs ignoring %r unexpected op %r\"\u0027 %"},{"line_number":249,"context_line":"                         (i.field, i.op))"},{"line_number":250,"context_line":"        else:"},{"line_number":251,"context_line":"            if i.op \u003d\u003d \u0027eq\u0027:"},{"line_number":252,"context_line":"                if i.field \u003d\u003d \u0027search_offset\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAASn%2F%2F0Ts%3D","line":249,"updated":"2013-08-29 07:15:28.000000000","message":"Perhaps this one should raise a InvalidInput, too ?","commit_id":"507cc0ddcb71e47a13289c667a9f380ec08e23fe"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"560b6e65e172d3cac4dde441005612387a947ba6","unresolved":false,"context_lines":[{"line_number":246,"context_line":"                stamp[\u0027start_timestamp_op\u0027] \u003d i.op"},{"line_number":247,"context_line":"            else:"},{"line_number":248,"context_line":"                LOG.warn(\u0027_query_to_kwargs ignoring %r unexpected op %r\"\u0027 %"},{"line_number":249,"context_line":"                         (i.field, i.op))"},{"line_number":250,"context_line":"        else:"},{"line_number":251,"context_line":"            if i.op \u003d\u003d \u0027eq\u0027:"},{"line_number":252,"context_line":"                if i.field \u003d\u003d \u0027search_offset\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAASn%2F%2Fy%2Fs%3D","line":249,"in_reply_to":"AAAASn%2F%2F0Ts%3D","updated":"2013-08-30 14:52:38.000000000","message":"sure, let\u0027s do that.","commit_id":"507cc0ddcb71e47a13289c667a9f380ec08e23fe"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"e8a29b918c66713bb81e0f9d8eca2e94a87105f4","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                    key \u003d translation.get(i.field, i.field)"},{"line_number":260,"context_line":"                    if key not in valid_keys:"},{"line_number":261,"context_line":"                        raise wsme.exc.UnknownArgument("},{"line_number":262,"context_line":"                            key, \"unrecognized query field\")"},{"line_number":263,"context_line":"                    kwargs[key] \u003d i.value"},{"line_number":264,"context_line":"            else:"},{"line_number":265,"context_line":"                raise wsme.exc.InvalidInput(i.op, \u0027unimplemented operator\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAASn%2F%2Fwis%3D","line":262,"updated":"2013-08-29 23:06:03.000000000","message":"If this is the new message involved, we should make sure our pot file cover these msgids, and it is better to use _(\" to enable globalization.","commit_id":"507cc0ddcb71e47a13289c667a9f380ec08e23fe"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"560b6e65e172d3cac4dde441005612387a947ba6","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                    key \u003d translation.get(i.field, i.field)"},{"line_number":260,"context_line":"                    if key not in valid_keys:"},{"line_number":261,"context_line":"                        raise wsme.exc.UnknownArgument("},{"line_number":262,"context_line":"                            key, \"unrecognized query field\")"},{"line_number":263,"context_line":"                    kwargs[key] \u003d i.value"},{"line_number":264,"context_line":"            else:"},{"line_number":265,"context_line":"                raise wsme.exc.InvalidInput(i.op, \u0027unimplemented operator\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAASn%2F%2Ft28%3D","line":262,"in_reply_to":"AAAASn%2F%2Fwis%3D","updated":"2013-08-30 14:52:38.000000000","message":"i left translation off, see below.","commit_id":"507cc0ddcb71e47a13289c667a9f380ec08e23fe"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"7201c4d2f0029e6a673fe6050f90a1988597241f","unresolved":false,"context_lines":[{"line_number":262,"context_line":"                            key, \"unrecognized query field\")"},{"line_number":263,"context_line":"                    kwargs[key] \u003d i.value"},{"line_number":264,"context_line":"            else:"},{"line_number":265,"context_line":"                raise wsme.exc.InvalidInput(i.op, \u0027unimplemented operator\u0027)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    if metaquery and \u0027metaquery\u0027 in valid_keys:"},{"line_number":268,"context_line":"        kwargs[\u0027metaquery\u0027] \u003d metaquery"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAASn%2F%2F0TQ%3D","line":265,"updated":"2013-08-29 07:15:28.000000000","message":"I think the exception can be translated.\n\nWhat do you think about \u0027%s unimplemented operator for %s\u0027  (i.op, i.field), to be more precise ?","commit_id":"507cc0ddcb71e47a13289c667a9f380ec08e23fe"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"e8a29b918c66713bb81e0f9d8eca2e94a87105f4","unresolved":false,"context_lines":[{"line_number":262,"context_line":"                            key, \"unrecognized query field\")"},{"line_number":263,"context_line":"                    kwargs[key] \u003d i.value"},{"line_number":264,"context_line":"            else:"},{"line_number":265,"context_line":"                raise wsme.exc.InvalidInput(i.op, \u0027unimplemented operator\u0027)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    if metaquery and \u0027metaquery\u0027 in valid_keys:"},{"line_number":268,"context_line":"        kwargs[\u0027metaquery\u0027] \u003d metaquery"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAASn%2F%2Fwio%3D","line":265,"updated":"2013-08-29 23:06:03.000000000","message":"If this is the new message involved, we should make sure our pot file cover these msgids, and it is better to use _(\" to enable globalization.","commit_id":"507cc0ddcb71e47a13289c667a9f380ec08e23fe"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"560b6e65e172d3cac4dde441005612387a947ba6","unresolved":false,"context_lines":[{"line_number":262,"context_line":"                            key, \"unrecognized query field\")"},{"line_number":263,"context_line":"                    kwargs[key] \u003d i.value"},{"line_number":264,"context_line":"            else:"},{"line_number":265,"context_line":"                raise wsme.exc.InvalidInput(i.op, \u0027unimplemented operator\u0027)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    if metaquery and \u0027metaquery\u0027 in valid_keys:"},{"line_number":268,"context_line":"        kwargs[\u0027metaquery\u0027] \u003d metaquery"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAASn%2F%2Ft2A%3D","line":265,"in_reply_to":"AAAASn%2F%2Fwio%3D","updated":"2013-08-30 14:52:38.000000000","message":"so i looked at wsme.exc.InvalidInput and it takes the parameters and outputs it like this:\n\n @property\n    def faultstring(self):\n        return _(six.u(\n            \"Invalid input for field/attribute %s. Value: \u0027%s\u0027. %s\")\n        ) % (self.fieldname, self.value, self.msg)\n\ni\u0027m ok to make this stuff translatable, but ultimately, i believe wsme will build the message into something else. let me know if you understand differently.\n\nhttps://github.com/stackforge/wsme/blob/master/wsme/exc.py","commit_id":"507cc0ddcb71e47a13289c667a9f380ec08e23fe"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"df9e66ec1d8d1e38fa17b5c22e49f410a875bf04","unresolved":false,"context_lines":[{"line_number":249,"context_line":"                raise wsme.exc.InvalidInput(\u0027op\u0027, i.op,"},{"line_number":250,"context_line":"                                            \u0027unimplemented operator\u0027)"},{"line_number":251,"context_line":"        else:"},{"line_number":252,"context_line":"            if i.op \u003d\u003d \u0027eq\u0027:"},{"line_number":253,"context_line":"                if i.field \u003d\u003d \u0027search_offset\u0027:"},{"line_number":254,"context_line":"                    stamp[\u0027search_offset\u0027] \u003d i.value"},{"line_number":255,"context_line":"                elif i.field.startswith(\u0027metadata.\u0027):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FobU%3D","line":252,"updated":"2013-09-02 06:50:42.000000000","message":"Could the above 2 lines be squeezed into 1 line?\n\nelif i.op \u003d\u003d \u0027eq\u0027:","commit_id":"51186e5021fea8329fd0ab9d773f8ac1683c4d93"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"19125f07bf5299e8885b4f453aa27cd302a2b3de","unresolved":false,"context_lines":[{"line_number":249,"context_line":"                raise wsme.exc.InvalidInput(\u0027op\u0027, i.op,"},{"line_number":250,"context_line":"                                            \u0027unimplemented operator\u0027)"},{"line_number":251,"context_line":"        else:"},{"line_number":252,"context_line":"            if i.op \u003d\u003d \u0027eq\u0027:"},{"line_number":253,"context_line":"                if i.field \u003d\u003d \u0027search_offset\u0027:"},{"line_number":254,"context_line":"                    stamp[\u0027search_offset\u0027] \u003d i.value"},{"line_number":255,"context_line":"                elif i.field.startswith(\u0027metadata.\u0027):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FF%2BE%3D","line":252,"in_reply_to":"AAAASn%2F%2Fj%2Bw%3D","updated":"2013-09-12 05:28:39.000000000","message":"why can\u0027t?\n\nif i.field \u003d\u003d \u0027timestamp\u0027:\n    ... ...\nelif i.op \u003d\u003d \u0027eq\u0027:\n    if i.filed \u003d\u003d \u0027search_offset\u0027:\n        .... ....\nelse:\n    raise InvalidInput","commit_id":"51186e5021fea8329fd0ab9d773f8ac1683c4d93"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"5b0352903d05332075bea355cefea68eaee280f4","unresolved":false,"context_lines":[{"line_number":249,"context_line":"                raise wsme.exc.InvalidInput(\u0027op\u0027, i.op,"},{"line_number":250,"context_line":"                                            \u0027unimplemented operator\u0027)"},{"line_number":251,"context_line":"        else:"},{"line_number":252,"context_line":"            if i.op \u003d\u003d \u0027eq\u0027:"},{"line_number":253,"context_line":"                if i.field \u003d\u003d \u0027search_offset\u0027:"},{"line_number":254,"context_line":"                    stamp[\u0027search_offset\u0027] \u003d i.value"},{"line_number":255,"context_line":"                elif i.field.startswith(\u0027metadata.\u0027):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2Fj%2Bw%3D","line":252,"in_reply_to":"AAAASn%2F%2FobU%3D","updated":"2013-09-03 13:46:58.000000000","message":"i don\u0027t believe i can roll up this if statement unless i don\u0027t raise the InvalidInput.","commit_id":"51186e5021fea8329fd0ab9d773f8ac1683c4d93"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"607d01d83a3bbfad3ffcd9c084b6b4a597aa9ead","unresolved":false,"context_lines":[{"line_number":264,"context_line":"                    kwargs[key] \u003d i.value"},{"line_number":265,"context_line":"            else:"},{"line_number":266,"context_line":"                raise wsme.exc.InvalidInput(\u0027op\u0027, i.op,"},{"line_number":267,"context_line":"                                            \u0027unimplemented operator\u0027)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    if metaquery and \u0027metaquery\u0027 in valid_keys:"},{"line_number":270,"context_line":"        kwargs[\u0027metaquery\u0027] \u003d metaquery"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2Fb3c%3D","line":267,"updated":"2013-09-04 19:28:48.000000000","message":"This message should include the field name that goes with the operator, in case there are more than one. For example, if I say filter gt a timestamp and gt a metadata value, I might get confused that filtering on timestamp ranges does not work, but it does.","commit_id":"51186e5021fea8329fd0ab9d773f8ac1683c4d93"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"24b7e892994e8b7bba82df549996ccbb223f0cd1","unresolved":false,"context_lines":[{"line_number":282,"context_line":"                    key \u003d translation.get(i.field, i.field)"},{"line_number":283,"context_line":"                    if key not in valid_keys:"},{"line_number":284,"context_line":"                        msg \u003d (\"unrecognized field in query: %s, valid keys: %s\" % "},{"line_number":285,"context_line":"                               (query, valid_keys))"},{"line_number":286,"context_line":"                        raise wsme.exc.UnknownArgument(k, msg)"},{"line_number":287,"context_line":"                    kwargs[key] \u003d i.value"},{"line_number":288,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2FZvE%3D","line":285,"updated":"2013-09-05 05:52:32.000000000","message":"1. Maybe this line is too long\n2. Make sure to support multi-languange, it is better to use \"_(\" to enable globalization feature.","commit_id":"204115d70b091ad8698d5ea0ace6a507d9808ddb"}],"tests/api/v2/test_query.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"766cc5ec95941dd1b175061d5e4e41d5c65f2c82","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                   value\u003d\u0027uid\u0027)]"},{"line_number":114,"context_line":"        kwargs \u003d api._query_to_kwargs(q, storage.SampleFilter.__init__)"},{"line_number":115,"context_line":"        self.assertIn(\u0027user\u0027, kwargs)"},{"line_number":116,"context_line":"        self.assertEqual(kwargs[\u0027user\u0027], \u0027uid\u0027)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def test_sample_filter_multi(self):"},{"line_number":119,"context_line":"        q \u003d [Query(field\u003d\u0027user_id\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2F8iM%3D","line":116,"updated":"2013-08-27 17:18:06.000000000","message":"These tests aren\u0027t verifying that no extra values are added to kwargs. Do we need to do that? assertDictEqual() would let you compare the entire return value with the expected value.","commit_id":"aeb220dfa2e2cd1743f3f7a55482b4d4bdeda30b"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"5f96356eedf51f3f368c554d243bee7ea4bffa4f","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                   value\u003d\u0027uid\u0027)]"},{"line_number":114,"context_line":"        kwargs \u003d api._query_to_kwargs(q, storage.SampleFilter.__init__)"},{"line_number":115,"context_line":"        self.assertIn(\u0027user\u0027, kwargs)"},{"line_number":116,"context_line":"        self.assertEqual(kwargs[\u0027user\u0027], \u0027uid\u0027)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def test_sample_filter_multi(self):"},{"line_number":119,"context_line":"        q \u003d [Query(field\u003d\u0027user_id\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2F7zo%3D","line":116,"in_reply_to":"AAAASn%2F%2F8iM%3D","updated":"2013-08-27 20:13:40.000000000","message":"add test to count length of kwargs returned -- using assertDictEqual doesn\u0027t seem to add much more value especially for multi-query example below since i\u0027d need to build a dict to compare","commit_id":"aeb220dfa2e2cd1743f3f7a55482b4d4bdeda30b"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"766cc5ec95941dd1b175061d5e4e41d5c65f2c82","unresolved":false,"context_lines":[{"line_number":170,"context_line":"                   value\u003d\u002720\u0027)]"},{"line_number":171,"context_line":"        self.assertRaises("},{"line_number":172,"context_line":"            wsme.exc.UnknownArgument,"},{"line_number":173,"context_line":"            lambda: api._query_to_kwargs(q, storage.SampleFilter.__init__))"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def test_sample_filter_invalid_op(self):"},{"line_number":176,"context_line":"        q \u003d [Query(field\u003d\u0027user_id\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2F8hg%3D","line":173,"updated":"2013-08-27 17:18:06.000000000","message":"You can pass arguments to the callable as trailing arguments to assertRaises(), so you don\u0027t need a lambda here. \n\n  self.assertRaises(\n    wsme.exc.UnknownArgument,\n    api._query_to_kwargs,\n    q,\n    storage.SampleFilter.__init__,\n  )","commit_id":"aeb220dfa2e2cd1743f3f7a55482b4d4bdeda30b"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"5f96356eedf51f3f368c554d243bee7ea4bffa4f","unresolved":false,"context_lines":[{"line_number":170,"context_line":"                   value\u003d\u002720\u0027)]"},{"line_number":171,"context_line":"        self.assertRaises("},{"line_number":172,"context_line":"            wsme.exc.UnknownArgument,"},{"line_number":173,"context_line":"            lambda: api._query_to_kwargs(q, storage.SampleFilter.__init__))"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def test_sample_filter_invalid_op(self):"},{"line_number":176,"context_line":"        q \u003d [Query(field\u003d\u0027user_id\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2F7zU%3D","line":173,"in_reply_to":"AAAASn%2F%2F8hg%3D","updated":"2013-08-27 20:13:40.000000000","message":"Done","commit_id":"aeb220dfa2e2cd1743f3f7a55482b4d4bdeda30b"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"8e8c61c66a7bf3509308a9e79651e9c8f31bb894","unresolved":false,"context_lines":[{"line_number":170,"context_line":"                   value\u003d\u002720\u0027)]"},{"line_number":171,"context_line":"        self.assertRaises("},{"line_number":172,"context_line":"            wsme.exc.UnknownArgument,"},{"line_number":173,"context_line":"            lambda: api._query_to_kwargs(q, storage.SampleFilter.__init__))"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def test_sample_filter_invalid_op(self):"},{"line_number":176,"context_line":"        q \u003d [Query(field\u003d\u0027user_id\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAASn%2F%2F8cQ%3D","line":173,"in_reply_to":"AAAASn%2F%2F8hg%3D","updated":"2013-08-27 17:39:13.000000000","message":"Tried what doug suggested and it worked fine. Other than using different\nparameters and a bit easier to read, any other difference this change makes?","commit_id":"aeb220dfa2e2cd1743f3f7a55482b4d4bdeda30b"}]}
