)]}'
{"HACKING.rst":[{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"20d5d125901355712735d2bd4e483c0b3f81a774","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"- [C300] Check for oslo library imports use the non-namespaced packages"},{"line_number":15,"context_line":"- [C301] Use _LC() for critical log level message translation"},{"line_number":16,"context_line":"- [C302] Use _LE() for exception log level message translation"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa81d914_83a95f7d","line":16,"updated":"2015-01-29 20:06:33.000000000","message":"I saw _LW in some files. Shouldn\u0027t that be checked also?","commit_id":"c6d4e01322463c154b521e8a5ddb45ddcc83eee4"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"c7f588316beecfd465e09c68a055fdec9b0a17b7","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"- [C300] Check for oslo library imports use the non-namespaced packages"},{"line_number":15,"context_line":"- [C301] Use _LC() for critical log level message translation"},{"line_number":16,"context_line":"- [C302] Use _LE() for exception log level message translation"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da86d52c_a4179ba2","line":16,"in_reply_to":"fa81d914_2e288fe1","updated":"2015-02-02 11:02:59.000000000","message":"I don\u0027t have problems with multiple patches instead of one huge one. I just haven\u0027t seen a subsequent patch that would address those log levels, that is why I asked about your plans here. So any of these options are accepted, please let me know which one you choose.","commit_id":"c6d4e01322463c154b521e8a5ddb45ddcc83eee4"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"109358948150adcbdde508c137529c370456e570","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"- [C300] Check for oslo library imports use the non-namespaced packages"},{"line_number":15,"context_line":"- [C301] Use _LC() for critical log level message translation"},{"line_number":16,"context_line":"- [C302] Use _LE() for exception log level message translation"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa81d914_2e288fe1","line":16,"in_reply_to":"fa81d914_83a95f7d","updated":"2015-01-30 01:48:33.000000000","message":"I planned to check _LW, _LI in following patches\n\nfrom my experience, large patch always comes across merge conflict\n\nbut if you do want to check all, I can do these checks all in one","commit_id":"c6d4e01322463c154b521e8a5ddb45ddcc83eee4"}],"ceilometer/hacking/checks.py":[{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"b69e8f2a570a74925e547a266bdbf3a966dbcae7","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def check_oslo_namespace_imports(logical_line, physical_line, filename):"},{"line_number":33,"context_line":"    # TODO(zqfan): When other oslo libraries switch over non-namespace\u0027d"},{"line_number":34,"context_line":"    # imports, we need to add them to the regexp below."},{"line_number":35,"context_line":"    oslo_namespace_imports \u003d re.compile("},{"line_number":36,"context_line":"        r\"from[\\s]*oslo[.](concurrency|config|utils)\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_eaa247ac","line":33,"updated":"2015-01-20 10:17:04.000000000","message":"non related changes, move this to the previous change","commit_id":"f211f15adc477997b459620602eda53ae7dd5c69"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"dd191996352755058f74c8f6fb869ca4a5acefd3","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def check_oslo_namespace_imports(logical_line, physical_line, filename):"},{"line_number":33,"context_line":"    # TODO(zqfan): When other oslo libraries switch over non-namespace\u0027d"},{"line_number":34,"context_line":"    # imports, we need to add them to the regexp below."},{"line_number":35,"context_line":"    oslo_namespace_imports \u003d re.compile("},{"line_number":36,"context_line":"        r\"from[\\s]*oslo[.](concurrency|config|utils)\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a930d6b_555d1778","line":33,"in_reply_to":"3a961159_eaa247ac","updated":"2015-01-27 04:12:29.000000000","message":"OK, will be done","commit_id":"f211f15adc477997b459620602eda53ae7dd5c69"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"708aa13b696b32bb10141fce28e9339d770e41e6","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        yield(0, msg)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"def check_i18n_log_translation(logical_line, physical_line, filename):"},{"line_number":50,"context_line":"    # ignore openstack.common since they are not maintained by us"},{"line_number":51,"context_line":"    if \u0027ceilometer/openstack/common/\u0027 in filename:"},{"line_number":52,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_3a3909d9","line":49,"updated":"2015-02-09 07:40:21.000000000","message":"What if the coder use the following lines, should we catch those?\n\nfrom ceilometer.openstack.common import logging\n\nlogger \u003d loggint.getLogger(__name__)\n\nlogger.warn(_(\"abc\"))","commit_id":"38af583d6242d861cf730411205d159baebd45dd"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"19af2aa3ebc9942e607c9b1b7aee775a27710966","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    if \u0027ceilometer/openstack/common/\u0027 in filename:"},{"line_number":52,"context_line":"        return"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    template \u003d r\"(.)*LOG\\.%s\\(\\s*(_\\()?(\u0027|\\\")\""},{"line_number":55,"context_line":"    log_critical \u003d re.compile(template % r\u0027critical\u0027)"},{"line_number":56,"context_line":"    if log_critical.match(logical_line):"},{"line_number":57,"context_line":"        yield(0, \u0027C301: Use _LC() for critical log level message translation\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_7f9293f7","line":54,"updated":"2015-02-09 07:31:05.000000000","message":"I think we could simplify this RE by removing (.)*","commit_id":"38af583d6242d861cf730411205d159baebd45dd"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"19af2aa3ebc9942e607c9b1b7aee775a27710966","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        return"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    template \u003d r\"(.)*LOG\\.%s\\(\\s*(_\\()?(\u0027|\\\")\""},{"line_number":55,"context_line":"    log_critical \u003d re.compile(template % r\u0027critical\u0027)"},{"line_number":56,"context_line":"    if log_critical.match(logical_line):"},{"line_number":57,"context_line":"        yield(0, \u0027C301: Use _LC() for critical log level message translation\u0027)"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_ffb5a37e","line":55,"updated":"2015-02-09 07:31:05.000000000","message":"We should make those pre-compiled RE as module level variables to minimize the check time.","commit_id":"38af583d6242d861cf730411205d159baebd45dd"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"708aa13b696b32bb10141fce28e9339d770e41e6","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    if log_exception.match(logical_line):"},{"line_number":61,"context_line":"        yield(0, \u0027C302: Use _LE() for exception log level message translation\u0027)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    log_error \u003d re.compile(template % r\u0027error\u0027)"},{"line_number":64,"context_line":"    if log_error.match(logical_line):"},{"line_number":65,"context_line":"        yield(0, \u0027C303: Use _LE() for error log level message translation\u0027)"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_7a61c1d2","line":63,"updated":"2015-02-09 07:40:21.000000000","message":"we should also catch the following:\n\nLOG.error(_LW(\"abc\"))","commit_id":"38af583d6242d861cf730411205d159baebd45dd"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"19af2aa3ebc9942e607c9b1b7aee775a27710966","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    log_warn \u003d re.compile(template % r\u0027warn\u0027)"},{"line_number":68,"context_line":"    if log_warn.match(logical_line):"},{"line_number":69,"context_line":"        yield(0, \u0027C304: Use _LW() for warn log level message translation\u0027)"},{"line_number":70,"context_line":"    log_warn \u003d re.compile(template % r\u0027warning\u0027)"},{"line_number":71,"context_line":"    if log_warn.match(logical_line):"},{"line_number":72,"context_line":"        yield(0, \u0027C304: Use _LW() for warn log level message translation\u0027)"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_3f765bd9","line":70,"updated":"2015-02-09 07:31:05.000000000","message":"Should we combine the warn/warning into a single RE?","commit_id":"38af583d6242d861cf730411205d159baebd45dd"}]}
