)]}'
{"HACKING.rst":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ca3957434ad2f0c8d1eb77ef3d39b234a78bf17b","unresolved":false,"context_lines":[{"line_number":70,"context_line":"- [N360] Yield must always be followed by a space when yielding a value."},{"line_number":71,"context_line":"- [N361] Check for usage of deprecated assertRegexpMatches and"},{"line_number":72,"context_line":"  assertNotRegexpMatches"},{"line_number":73,"context_line":"- [N362] Imports for privsep modules should be specific. Use \"import nova.privsep.path\", not \"from nova.privsep import path\". This ensures callers know that the method they\u0027re calling is using priviledge escalation."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Creating Unit Tests"},{"line_number":76,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_7f196d20","line":73,"range":{"start_line":73,"start_character":74,"end_line":73,"end_character":81},"updated":"2019-04-02 10:28:48.000000000","message":"Wrap me","commit_id":"71e5c9ea4da49e6ef86cc176ac24216186db1092"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"2925d67f1abaa9404f0c49bd54ea25034e8308cd","unresolved":false,"context_lines":[{"line_number":70,"context_line":"- [N360] Yield must always be followed by a space when yielding a value."},{"line_number":71,"context_line":"- [N361] Check for usage of deprecated assertRegexpMatches and"},{"line_number":72,"context_line":"  assertNotRegexpMatches"},{"line_number":73,"context_line":"- [N362] Imports for privsep modules should be specific. Use \"import nova.privsep.path\", not \"from nova.privsep import path\". This ensures callers know that the method they\u0027re calling is using priviledge escalation."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Creating Unit Tests"},{"line_number":76,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_6603f9bf","line":73,"range":{"start_line":73,"start_character":74,"end_line":73,"end_character":81},"in_reply_to":"5fc1f717_7f196d20","updated":"2019-04-04 04:50:50.000000000","message":"Done","commit_id":"71e5c9ea4da49e6ef86cc176ac24216186db1092"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"90b03f87c402c45d91c88ee5aeaba707614bdfef","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  assertNotRegexpMatches"},{"line_number":73,"context_line":"- [N362] Imports for privsep modules should be specific. Use \"import nova.privsep.path\","},{"line_number":74,"context_line":"  not \"from nova.privsep import path\". This ensures callers know that the method they\u0027re"},{"line_number":75,"context_line":"  calling is using priviledge escalation."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Creating Unit Tests"},{"line_number":78,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_0340de06","line":75,"range":{"start_line":75,"start_character":19,"end_line":75,"end_character":29},"updated":"2019-04-04 10:42:54.000000000","message":"privilege","commit_id":"f5b74c0ce1e7aeacd4fa7349f72748d6f35a8d78"}],"nova/hacking/checks.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ca3957434ad2f0c8d1eb77ef3d39b234a78bf17b","unresolved":false,"context_lines":[{"line_number":858,"context_line":"    \"\"\"Ensure that privsep imports are always specific."},{"line_number":859,"context_line":""},{"line_number":860,"context_line":"    N362"},{"line_number":861,"context_line":"    \"\"\""},{"line_number":862,"context_line":"    \"\"\"Do not abbreviate or alias privsep module imports."},{"line_number":863,"context_line":""},{"line_number":864,"context_line":"    When accessing symbols under nova.privsep in code or tests, the full module"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_bfe4b50f","line":861,"range":{"start_line":861,"start_character":4,"end_line":861,"end_character":7},"updated":"2019-04-02 10:28:48.000000000","message":"Merge docstrings","commit_id":"71e5c9ea4da49e6ef86cc176ac24216186db1092"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"2925d67f1abaa9404f0c49bd54ea25034e8308cd","unresolved":false,"context_lines":[{"line_number":858,"context_line":"    \"\"\"Ensure that privsep imports are always specific."},{"line_number":859,"context_line":""},{"line_number":860,"context_line":"    N362"},{"line_number":861,"context_line":"    \"\"\""},{"line_number":862,"context_line":"    \"\"\"Do not abbreviate or alias privsep module imports."},{"line_number":863,"context_line":""},{"line_number":864,"context_line":"    When accessing symbols under nova.privsep in code or tests, the full module"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_860625cd","line":861,"range":{"start_line":861,"start_character":4,"end_line":861,"end_character":7},"in_reply_to":"5fc1f717_bfe4b50f","updated":"2019-04-04 04:50:50.000000000","message":"Woops.","commit_id":"71e5c9ea4da49e6ef86cc176ac24216186db1092"}],"nova/tests/fixtures.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb54b8339ac78abef468f9eb5b1a5f02eb2a2f9c","unresolved":false,"context_lines":[{"line_number":56,"context_line":"from nova import objects"},{"line_number":57,"context_line":"from nova.objects import base as obj_base"},{"line_number":58,"context_line":"from nova.objects import service as service_obj"},{"line_number":59,"context_line":"import nova.privsep"},{"line_number":60,"context_line":"from nova import quota as nova_quota"},{"line_number":61,"context_line":"from nova import rpc"},{"line_number":62,"context_line":"from nova import service"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_4e6dca97","line":59,"range":{"start_line":59,"start_character":0,"end_line":59,"end_character":19},"updated":"2019-04-03 09:23:17.000000000","message":"nit: Should probably have been in the previous patch","commit_id":"71e5c9ea4da49e6ef86cc176ac24216186db1092"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"2925d67f1abaa9404f0c49bd54ea25034e8308cd","unresolved":false,"context_lines":[{"line_number":56,"context_line":"from nova import objects"},{"line_number":57,"context_line":"from nova.objects import base as obj_base"},{"line_number":58,"context_line":"from nova.objects import service as service_obj"},{"line_number":59,"context_line":"import nova.privsep"},{"line_number":60,"context_line":"from nova import quota as nova_quota"},{"line_number":61,"context_line":"from nova import rpc"},{"line_number":62,"context_line":"from nova import service"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_46103d01","line":59,"range":{"start_line":59,"start_character":0,"end_line":59,"end_character":19},"in_reply_to":"5fc1f717_4e6dca97","updated":"2019-04-04 04:50:50.000000000","message":"Yeah, I caught this one late because Eric\u0027s hacking rule was better than mine. Sorry.","commit_id":"71e5c9ea4da49e6ef86cc176ac24216186db1092"}]}
