)]}'
{"watcher/hacking/checks.py":[{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"fe15f68bb51a4e362250d964c744a2ebf140bd3a","unresolved":false,"context_lines":[{"line_number":36,"context_line":"#    on the N3xx value."},{"line_number":37,"context_line":"#  - List the new rule in the top level HACKING.rst file"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"_all_log_levels \u003d {\u0027debug\u0027, \u0027error\u0027, \u0027info\u0027, \u0027warning\u0027,"},{"line_number":40,"context_line":"                   \u0027critical\u0027, \u0027exception\u0027}"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"# Since _Lx have been removed, we just need to check _()"},{"line_number":43,"context_line":"translated_logs \u003d re.compile("}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_b38937cb","line":40,"range":{"start_line":39,"start_character":18,"end_line":40,"end_character":43},"updated":"2017-08-02 09:54:29.000000000","message":"Why is set used here? As I see it was a dictionary in the legacy code, so I think we should modify it to list.","commit_id":"6d34e4e02914680fada8fe96eacb1a5619873d1d"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"fe15f68bb51a4e362250d964c744a2ebf140bd3a","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"# Since _Lx have been removed, we just need to check _()"},{"line_number":43,"context_line":"translated_logs \u003d re.compile("},{"line_number":44,"context_line":"    r\"(.)*LOG\\.(%(level)s)\\(\\s*_\\(\" % {\u0027level\u0027: \u0027|\u0027.join(_all_log_levels)})"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"log_warn \u003d re.compile("},{"line_number":47,"context_line":"    r\"(.)*LOG\\.(warn)\\(\\s*(\u0027|\\\"|_)\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_537c4bb4","line":44,"range":{"start_line":44,"start_character":51,"end_line":44,"end_character":73},"updated":"2017-08-02 09:54:29.000000000","message":"If we have a constant list of string, we can just add it here, I think it wouldn\u0027t be more complex or unreadable.","commit_id":"6d34e4e02914680fada8fe96eacb1a5619873d1d"},{"author":{"_account_id":25720,"name":"Ngo Quoc Cuong","email":"cuongngo.ict@gmail.com","username":"cuongnq"},"change_message_id":"3be71f76f65d71cb609cb9ae8e68da015f87c3b9","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"# Since _Lx have been removed, we just need to check _()"},{"line_number":43,"context_line":"translated_logs \u003d re.compile("},{"line_number":44,"context_line":"    r\"(.)*LOG\\.(%(level)s)\\(\\s*_\\(\" % {\u0027level\u0027: \u0027|\u0027.join(_all_log_levels)})"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"log_warn \u003d re.compile("},{"line_number":47,"context_line":"    r\"(.)*LOG\\.(warn)\\(\\s*(\u0027|\\\"|_)\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_ca0a0289","line":44,"range":{"start_line":44,"start_character":51,"end_line":44,"end_character":73},"in_reply_to":"df3967d1_537c4bb4","updated":"2017-08-09 07:55:04.000000000","message":"Actually, I don\u0027t see any improvement when we change to use list instead.","commit_id":"6d34e4e02914680fada8fe96eacb1a5619873d1d"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"fe15f68bb51a4e362250d964c744a2ebf140bd3a","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    asked not to translate them."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    * This check assumes that \u0027LOG\u0027 is a logger."},{"line_number":79,"context_line":"    N537"},{"line_number":80,"context_line":"    \"\"\""},{"line_number":81,"context_line":"    if translated_logs.match(logical_line):"},{"line_number":82,"context_line":"        yield(0, \"N537 Don\u0027t translate logs\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_53556b1c","line":79,"range":{"start_line":79,"start_character":4,"end_line":79,"end_character":8},"updated":"2017-08-02 09:54:29.000000000","message":"Why is it changed? In my opinion, it can be the same as before, as patchset title suggest \"update\", not a new one.","commit_id":"6d34e4e02914680fada8fe96eacb1a5619873d1d"},{"author":{"_account_id":25720,"name":"Ngo Quoc Cuong","email":"cuongngo.ict@gmail.com","username":"cuongnq"},"change_message_id":"3be71f76f65d71cb609cb9ae8e68da015f87c3b9","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    asked not to translate them."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    * This check assumes that \u0027LOG\u0027 is a logger."},{"line_number":79,"context_line":"    N537"},{"line_number":80,"context_line":"    \"\"\""},{"line_number":81,"context_line":"    if translated_logs.match(logical_line):"},{"line_number":82,"context_line":"        yield(0, \"N537 Don\u0027t translate logs\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_6aa2f69c","line":79,"range":{"start_line":79,"start_character":4,"end_line":79,"end_character":8},"in_reply_to":"df3967d1_53556b1c","updated":"2017-08-09 07:55:04.000000000","message":"Watcher doesn\u0027t define its own hacking (I mean HACKING.rst) but just refer to other projects, [N319] from nova is for  \"Validate that debug level logs are not translated.\" not for \"Don\u0027t translate logs\"","commit_id":"6d34e4e02914680fada8fe96eacb1a5619873d1d"}],"watcher/tests/hacking/__init__.py":[{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"fe15f68bb51a4e362250d964c744a2ebf140bd3a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"df3967d1_f33b3fe8","line":1,"updated":"2017-08-02 09:54:29.000000000","message":"Unrelated file mode change","commit_id":"6d34e4e02914680fada8fe96eacb1a5619873d1d"},{"author":{"_account_id":25720,"name":"Ngo Quoc Cuong","email":"cuongngo.ict@gmail.com","username":"cuongnq"},"change_message_id":"3be71f76f65d71cb609cb9ae8e68da015f87c3b9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"9f436f4f_2af06ec9","line":1,"in_reply_to":"df3967d1_f33b3fe8","updated":"2017-08-09 07:55:04.000000000","message":"How can Python recognize this package without this file?","commit_id":"6d34e4e02914680fada8fe96eacb1a5619873d1d"}],"watcher/tests/hacking/test_hacking.py":[{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"fe15f68bb51a4e362250d964c744a2ebf140bd3a","unresolved":false,"context_lines":[{"line_number":23,"context_line":"            self.assertEqual(1, len(list(checks.no_translate_logs(bad, \u0027f\u0027))))"},{"line_number":24,"context_line":"            # Catch abuses when used with a variable and not a literal"},{"line_number":25,"context_line":"            bad \u003d \u0027LOG.%s(_(msg))\u0027 % log"},{"line_number":26,"context_line":"            self.assertEqual(1, len(list(checks.no_translate_logs(bad, \u0027f\u0027))))"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_b30c963b","line":26,"updated":"2017-08-02 09:54:29.000000000","message":"maybe add some good examples also?","commit_id":"6d34e4e02914680fada8fe96eacb1a5619873d1d"}]}
