)]}'
{"HACKING.rst":[{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"b022fff2aa1e41709ba1327cfa7a5a2665a83baf","unresolved":false,"context_lines":[{"line_number":20,"context_line":"- [N534] Exception messages should be translated"},{"line_number":21,"context_line":"- [N535] Usage of Python eventlet module not allowed"},{"line_number":22,"context_line":"- [N536] Use assertIsNone/assertIsNotNone rather than assertEqual/assertIs to check None values."},{"line_number":23,"context_line":"- [N537] Don\u0027t translate logs."}],"source_content_type":"text/x-rst","patch_set":5,"id":"bff0334d_5194a536","line":23,"updated":"2017-04-12 20:43:51.000000000","message":"As I\u0027m sure you know, this hacking check will only be \"active\" (once released) for projects that use lib\u0027s hacking check factory. For example, neutron will not even run this check [1].\n\n\n[1] https://github.com/openstack/neutron/blob/master/tox.ini#L130","commit_id":"18b9fae616f931fae65b8bbc1e686c90f7b60e53"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"e207755c3f265b7237c6578ff3f04df7fab8c61f","unresolved":false,"context_lines":[{"line_number":20,"context_line":"- [N534] Exception messages should be translated"},{"line_number":21,"context_line":"- [N535] Usage of Python eventlet module not allowed"},{"line_number":22,"context_line":"- [N536] Use assertIsNone/assertIsNotNone rather than assertEqual/assertIs to check None values."},{"line_number":23,"context_line":"- [N537] Don\u0027t translate logs."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9ff52f3f_a5883871","line":23,"in_reply_to":"9ff52f3f_c27fc4a9","updated":"2017-04-13 12:24:58.000000000","message":"Unfortunately I don\u0027t think that\u0027s as simple as it sounds. Some sub-projects still use neutron\u0027s factory [1] and would also likely be impacted. In addition, I think there\u0027s some technical issues here. For example neutron provides some of the same checks but will different hacking check number, etc.. They can all be worked through, but it\u0027ll take a little effort.\n\n\n[1] http://codesearch.openstack.org/?q\u003dneutron.hacking.checks.factory","commit_id":"18b9fae616f931fae65b8bbc1e686c90f7b60e53"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"f5f1478fdc36db2bb6ed144ecd7913165293893c","unresolved":false,"context_lines":[{"line_number":20,"context_line":"- [N534] Exception messages should be translated"},{"line_number":21,"context_line":"- [N535] Usage of Python eventlet module not allowed"},{"line_number":22,"context_line":"- [N536] Use assertIsNone/assertIsNotNone rather than assertEqual/assertIs to check None values."},{"line_number":23,"context_line":"- [N537] Don\u0027t translate logs."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9ff52f3f_c27fc4a9","line":23,"in_reply_to":"bff0334d_5194a536","updated":"2017-04-12 22:57:49.000000000","message":"I know. We should actually switch neutron to the library.","commit_id":"18b9fae616f931fae65b8bbc1e686c90f7b60e53"}],"neutron_lib/callbacks/manager.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"2ae124fc97b5a9eb680f1a115a888dea66539e87","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                    event.startswith(events.PRECOMMIT)"},{"line_number":176,"context_line":"                )"},{"line_number":177,"context_line":"                if not abortable_event:"},{"line_number":178,"context_line":"                    LOG.exception(\"Error during notification for \""},{"line_number":179,"context_line":"                                  \"%(callback)s %(resource)s, %(event)s\","},{"line_number":180,"context_line":"                                  {\u0027callback\u0027: callback_id,"},{"line_number":181,"context_line":"                                   \u0027resource\u0027: resource, \u0027event\u0027: event})"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a1ced50_624e13c3","line":178,"updated":"2017-03-16 20:45:00.000000000","message":"In the email thread it says to keep translations for exceptions, no?\n\nhttp://lists.openstack.org/pipermail/openstack-dev/2017-March/114191.html","commit_id":"3c09471996371cb748752d4dfe8f33c283d48f0b"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"35f077f1b04662256ba62271922fa7ce21ebdf4b","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                    event.startswith(events.PRECOMMIT)"},{"line_number":176,"context_line":"                )"},{"line_number":177,"context_line":"                if not abortable_event:"},{"line_number":178,"context_line":"                    LOG.exception(\"Error during notification for \""},{"line_number":179,"context_line":"                                  \"%(callback)s %(resource)s, %(event)s\","},{"line_number":180,"context_line":"                                  {\u0027callback\u0027: callback_id,"},{"line_number":181,"context_line":"                                   \u0027resource\u0027: resource, \u0027event\u0027: event})"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a1ced50_e5084d2b","line":178,"in_reply_to":"1a1ced50_02ed5f8b","updated":"2017-03-16 20:55:14.000000000","message":"ack","commit_id":"3c09471996371cb748752d4dfe8f33c283d48f0b"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"c88694e8755c2011ab7757e20d6593e4d087897d","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                    event.startswith(events.PRECOMMIT)"},{"line_number":176,"context_line":"                )"},{"line_number":177,"context_line":"                if not abortable_event:"},{"line_number":178,"context_line":"                    LOG.exception(\"Error during notification for \""},{"line_number":179,"context_line":"                                  \"%(callback)s %(resource)s, %(event)s\","},{"line_number":180,"context_line":"                                  {\u0027callback\u0027: callback_id,"},{"line_number":181,"context_line":"                                   \u0027resource\u0027: resource, \u0027event\u0027: event})"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a1ced50_02ed5f8b","line":178,"in_reply_to":"1a1ced50_624e13c3","updated":"2017-03-16 20:45:51.000000000","message":"for exceptions bubbled to user (e.g. as api response payload), not log messages.","commit_id":"3c09471996371cb748752d4dfe8f33c283d48f0b"}],"neutron_lib/hacking/translation_checks.py":[{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"4f457efef4f521904cd248a111c1af31fa453b43","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    if _translation_checks_not_enforced(filename):"},{"line_number":91,"context_line":"        return"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    msg \u003d \"N537: Log messages should not be translated!\""},{"line_number":94,"context_line":"    if _log_translation_hint.match(logical_line):"},{"line_number":95,"context_line":"        yield (0, msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a1ced50_c036dfb3","line":93,"range":{"start_line":93,"start_character":54,"end_line":93,"end_character":55},"updated":"2017-03-16 21:36:02.000000000","message":"We\u0027re serious about this one!","commit_id":"3c09471996371cb748752d4dfe8f33c283d48f0b"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"4f457efef4f521904cd248a111c1af31fa453b43","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    msg \u003d \"N537: Log messages should not be translated!\""},{"line_number":94,"context_line":"    if _log_translation_hint.match(logical_line):"},{"line_number":95,"context_line":"        yield (0, msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a1ced50_20cfb3b1","line":95,"range":{"start_line":95,"start_character":15,"end_line":95,"end_character":16},"updated":"2017-03-16 21:36:02.000000000","message":"Would be more complete to yield the index of the match here.","commit_id":"3c09471996371cb748752d4dfe8f33c283d48f0b"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"3ff507192f776d14976f527aa25b8128a652adf0","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    msg \u003d \"N537: Log messages should not be translated!\""},{"line_number":94,"context_line":"    if _log_translation_hint.match(logical_line):"},{"line_number":95,"context_line":"        yield (0, msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a1ced50_89e0d0ce","line":95,"range":{"start_line":95,"start_character":15,"end_line":95,"end_character":16},"in_reply_to":"1a1ced50_20cfb3b1","updated":"2017-03-22 16:41:16.000000000","message":"Not sure it\u0027s worth complexity.","commit_id":"3c09471996371cb748752d4dfe8f33c283d48f0b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a5ce842f58c53b6dd30fb977c1d2846fda72f627","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"_log_translation_hint \u003d re.compile("},{"line_number":27,"context_line":"    r\".*LOG\\.(%(levels)s)\\(\\s*(%(hints)s)\\((|\u0027|\\\")\" % {"},{"line_number":28,"context_line":"        \u0027levels\u0027: \u0027|\u0027.join(_all_log_levels),"},{"line_number":29,"context_line":"        \u0027hints\u0027: \u0027|\u0027.join(_all_hints),"},{"line_number":30,"context_line":"    })"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_2d08c7d9","line":27,"range":{"start_line":27,"start_character":43,"end_line":27,"end_character":50},"updated":"2017-03-22 16:59:24.000000000","message":"I wonder this match all cases as empty string is included in OR expression. How about dropping OR part?","commit_id":"8acb2ad243e8fe796fa95fcd19bac9e8f1d95ce7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"27977267b44604b5e17404515242051461055950","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"_log_translation_hint \u003d re.compile("},{"line_number":27,"context_line":"    r\".*LOG\\.(%(levels)s)\\(\\s*(%(hints)s)\\((|\u0027|\\\")\" % {"},{"line_number":28,"context_line":"        \u0027levels\u0027: \u0027|\u0027.join(_all_log_levels),"},{"line_number":29,"context_line":"        \u0027hints\u0027: \u0027|\u0027.join(_all_hints),"},{"line_number":30,"context_line":"    })"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_cd7573cb","line":27,"range":{"start_line":27,"start_character":43,"end_line":27,"end_character":50},"in_reply_to":"1a1ced50_2d08c7d9","updated":"2017-03-22 17:07:59.000000000","message":"Oh. Should it be (\u0027|\\\")...","commit_id":"8acb2ad243e8fe796fa95fcd19bac9e8f1d95ce7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"c1e46842b81799f1c06c814214c3d69e39c76d6b","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"_log_translation_hint \u003d re.compile("},{"line_number":27,"context_line":"    r\".*LOG\\.(%(levels)s)\\(\\s*(%(hints)s)\\((|\u0027|\\\")\" % {"},{"line_number":28,"context_line":"        \u0027levels\u0027: \u0027|\u0027.join(_all_log_levels),"},{"line_number":29,"context_line":"        \u0027hints\u0027: \u0027|\u0027.join(_all_hints),"},{"line_number":30,"context_line":"    })"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_f0b8442c","line":27,"range":{"start_line":27,"start_character":43,"end_line":27,"end_character":50},"in_reply_to":"1a1ced50_cd7573cb","updated":"2017-03-22 17:12:46.000000000","message":"Ah you are actually right. It shouldn\u0027t matter what goes after. If it\u0027s LOG.*(_*( it\u0027s wrong.","commit_id":"8acb2ad243e8fe796fa95fcd19bac9e8f1d95ce7"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"7b0a326c284db5bc33025966b2f8f405ddbbd458","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"_log_translation_hint \u003d re.compile("},{"line_number":27,"context_line":"    r\".*LOG\\.(%(levels)s)\\(\\s*(%(hints)s)\\((|\u0027|\\\")\" % {"},{"line_number":28,"context_line":"        \u0027levels\u0027: \u0027|\u0027.join(_all_log_levels),"},{"line_number":29,"context_line":"        \u0027hints\u0027: \u0027|\u0027.join(_all_hints),"},{"line_number":30,"context_line":"    })"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_7f219d9f","line":27,"range":{"start_line":27,"start_character":43,"end_line":27,"end_character":50},"in_reply_to":"1a1ced50_f0b8442c","updated":"2017-03-24 08:36:30.000000000","message":"Wont LOG.*(_*( also match LOG.*(_(   ??\nIf so, isnt that still allowed?","commit_id":"8acb2ad243e8fe796fa95fcd19bac9e8f1d95ce7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a62ca3e812f3f43f029df015ab493edc1a293aa4","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"_log_translation_hint \u003d re.compile("},{"line_number":27,"context_line":"    r\".*LOG\\.(%(levels)s)\\(\\s*(%(hints)s)\\((|\u0027|\\\")\" % {"},{"line_number":28,"context_line":"        \u0027levels\u0027: \u0027|\u0027.join(_all_log_levels),"},{"line_number":29,"context_line":"        \u0027hints\u0027: \u0027|\u0027.join(_all_hints),"},{"line_number":30,"context_line":"    })"}],"source_content_type":"text/x-python","patch_set":3,"id":"dfeb2761_cf68a522","line":27,"range":{"start_line":27,"start_character":43,"end_line":27,"end_character":50},"in_reply_to":"ffe62b97_7f219d9f","updated":"2017-04-03 18:19:10.000000000","message":"No, _ is also not allowed in LOG.* context.","commit_id":"8acb2ad243e8fe796fa95fcd19bac9e8f1d95ce7"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"b022fff2aa1e41709ba1327cfa7a5a2665a83baf","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    msg \u003d \"N537: Log messages should not be translated!\""},{"line_number":94,"context_line":"    if _log_translation_hint.match(logical_line):"},{"line_number":95,"context_line":"        yield (0, msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bff0334d_f13df9c3","line":95,"range":{"start_line":95,"start_character":15,"end_line":95,"end_character":16},"updated":"2017-04-12 20:43:51.000000000","message":"IMO it\u0027d be nice if we yeilded the index of the _Lx for completeness sake.","commit_id":"18b9fae616f931fae65b8bbc1e686c90f7b60e53"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"f5f1478fdc36db2bb6ed144ecd7913165293893c","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    msg \u003d \"N537: Log messages should not be translated!\""},{"line_number":94,"context_line":"    if _log_translation_hint.match(logical_line):"},{"line_number":95,"context_line":"        yield (0, msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9ff52f3f_659fe2b4","line":95,"range":{"start_line":95,"start_character":15,"end_line":95,"end_character":16},"in_reply_to":"bff0334d_f13df9c3","updated":"2017-04-12 22:57:49.000000000","message":"Done","commit_id":"18b9fae616f931fae65b8bbc1e686c90f7b60e53"}]}
