)]}'
{"nova/hacking/checks.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"270052847128f015a936d8a39a9725f0d62d1a8a","unresolved":false,"context_lines":[{"line_number":543,"context_line":"           \"more information. nova.test.nested() is an alternative as well.\")"},{"line_number":544,"context_line":""},{"line_number":545,"context_line":"    if contextlib_nested.match(logical_line):"},{"line_number":546,"context_line":"        yield(0, msg)"},{"line_number":547,"context_line":""},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"def factory(register):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a1a9d01_251c4bc0","line":546,"updated":"2015-09-29 11:45:19.000000000","message":"You need to update https://github.com/openstack/nova/blob/master/HACKING.rst to have the 341","commit_id":"ec9b62e06f8a384eee2c1bbc5a05e0b2fe39df17"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"5da1205fd67a0d8fd69048abc3a068ac0823699a","unresolved":false,"context_lines":[{"line_number":543,"context_line":"           \"more information. nova.test.nested() is an alternative as well.\")"},{"line_number":544,"context_line":""},{"line_number":545,"context_line":"    if contextlib_nested.match(logical_line):"},{"line_number":546,"context_line":"        yield(0, msg)"},{"line_number":547,"context_line":""},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"def factory(register):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a1a9d01_188c0a7e","line":546,"in_reply_to":"9a1a9d01_251c4bc0","updated":"2015-09-29 11:51:11.000000000","message":"Thanks gary. Done.","commit_id":"ec9b62e06f8a384eee2c1bbc5a05e0b2fe39df17"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"c6d3bc6c95877119315d1a0cd9d4314ee0473023","unresolved":false,"context_lines":[{"line_number":98,"context_line":"http_not_implemented_re \u003d re.compile(r\"raise .*HTTPNotImplemented\\(\")"},{"line_number":99,"context_line":"greenthread_spawn_re \u003d re.compile(r\".*greenthread.spawn\\(.*\\)\")"},{"line_number":100,"context_line":"greenthread_spawn_n_re \u003d re.compile(r\".*greenthread.spawn_n\\(.*\\)\")"},{"line_number":101,"context_line":"contextlib_nested \u003d re.compile(r\"^with (contextlib\\.)?nested\\(\")"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"class BaseASTChecker(ast.NodeVisitor):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a1a9d01_18ae3398","line":101,"updated":"2015-09-29 19:35:51.000000000","message":"Why is contextlib optional here?  I couldn\u0027t see any examples in the code where \"with nested\" was used.","commit_id":"e1b41ae2d8b36a075eadbb3888e251c7644842b6"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"310d56bc59dc1e24f3351db94736d59a4a033920","unresolved":false,"context_lines":[{"line_number":98,"context_line":"http_not_implemented_re \u003d re.compile(r\"raise .*HTTPNotImplemented\\(\")"},{"line_number":99,"context_line":"greenthread_spawn_re \u003d re.compile(r\".*greenthread.spawn\\(.*\\)\")"},{"line_number":100,"context_line":"greenthread_spawn_n_re \u003d re.compile(r\".*greenthread.spawn_n\\(.*\\)\")"},{"line_number":101,"context_line":"contextlib_nested \u003d re.compile(r\"^with (contextlib\\.)?nested\\(\")"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"class BaseASTChecker(ast.NodeVisitor):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a1a9d01_3bd5311b","line":101,"in_reply_to":"9a1a9d01_18ae3398","updated":"2015-09-29 19:58:32.000000000","message":"good point. i can make it more specific if you wish. Forgot to mention in commit message that this was borrowed from Neutron:\n\nhttp://git.openstack.org/cgit/openstack/neutron/tree/neutron/hacking/checks.py#n57","commit_id":"e1b41ae2d8b36a075eadbb3888e251c7644842b6"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"3a5651146a6cb7d5d951d3e72d4d453e9a99404b","unresolved":false,"context_lines":[{"line_number":98,"context_line":"http_not_implemented_re \u003d re.compile(r\"raise .*HTTPNotImplemented\\(\")"},{"line_number":99,"context_line":"greenthread_spawn_re \u003d re.compile(r\".*greenthread.spawn\\(.*\\)\")"},{"line_number":100,"context_line":"greenthread_spawn_n_re \u003d re.compile(r\".*greenthread.spawn_n\\(.*\\)\")"},{"line_number":101,"context_line":"contextlib_nested \u003d re.compile(r\"^with (contextlib\\.)?nested\\(\")"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"class BaseASTChecker(ast.NodeVisitor):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a1a9d01_4fce1f2f","line":101,"in_reply_to":"9a1a9d01_3bd5311b","updated":"2015-09-29 21:53:26.000000000","message":"That would be good just on the off chance that someone adds a context manager named \u0027nested\u0027.","commit_id":"e1b41ae2d8b36a075eadbb3888e251c7644842b6"}],"nova/tests/unit/test_hacking.py":[{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"077124f4fa4910514054c62b676dca06e0540e5f","unresolved":false,"context_lines":[{"line_number":547,"context_line":"        filename \u003d \"nova/api/openstack/compute/v21/test.py\""},{"line_number":548,"context_line":"        self._assert_has_no_errors(code, checks.check_no_contextlib_nested,"},{"line_number":549,"context_line":"                                   filename\u003dfilename)"},{"line_number":550,"context_line":"        code \u003d \"\"\""},{"line_number":551,"context_line":"               with contextlib.nested("},{"line_number":552,"context_line":"                   mock.patch.object(network_model.NetworkInfo, \u0027hydrate\u0027),"},{"line_number":553,"context_line":"                   mock.patch.object(objects.InstanceInfoCache, \u0027save\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a2fa921_7e5ed313","line":550,"updated":"2015-10-12 13:44:03.000000000","message":"It looks like this is the same code as before, so you shouldn\u0027t need to reassign it.","commit_id":"f0a893f8872daae56a73d6180541f9303d30b770"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"9351ae8baa20055f9dc392f3f391d1a3e1ebb814","unresolved":false,"context_lines":[{"line_number":547,"context_line":"        filename \u003d \"nova/api/openstack/compute/v21/test.py\""},{"line_number":548,"context_line":"        self._assert_has_no_errors(code, checks.check_no_contextlib_nested,"},{"line_number":549,"context_line":"                                   filename\u003dfilename)"},{"line_number":550,"context_line":"        code \u003d \"\"\""},{"line_number":551,"context_line":"               with contextlib.nested("},{"line_number":552,"context_line":"                   mock.patch.object(network_model.NetworkInfo, \u0027hydrate\u0027),"},{"line_number":553,"context_line":"                   mock.patch.object(objects.InstanceInfoCache, \u0027save\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a2ca52d_721db1bc","line":550,"in_reply_to":"5a2ca52d_be2a3d2b","updated":"2015-10-13 13:15:36.000000000","message":"Wow that\u0027s even the line I specifically looked at because I thought they would be different... I guess I need glasses.","commit_id":"f0a893f8872daae56a73d6180541f9303d30b770"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"93d26bf80ee789b31a8ff8e0f8ebe7a761eaa3e5","unresolved":false,"context_lines":[{"line_number":547,"context_line":"        filename \u003d \"nova/api/openstack/compute/v21/test.py\""},{"line_number":548,"context_line":"        self._assert_has_no_errors(code, checks.check_no_contextlib_nested,"},{"line_number":549,"context_line":"                                   filename\u003dfilename)"},{"line_number":550,"context_line":"        code \u003d \"\"\""},{"line_number":551,"context_line":"               with contextlib.nested("},{"line_number":552,"context_line":"                   mock.patch.object(network_model.NetworkInfo, \u0027hydrate\u0027),"},{"line_number":553,"context_line":"                   mock.patch.object(objects.InstanceInfoCache, \u0027save\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a2ca52d_be2a3d2b","line":550,"in_reply_to":"7a2fa921_7e5ed313","updated":"2015-10-13 10:25:23.000000000","message":"Nope it\u0027s not the same, compare 540 with 551 please","commit_id":"f0a893f8872daae56a73d6180541f9303d30b770"}]}
