)]}'
{"nova/hacking/checks.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8184d1033a6c2a6f32ca786009fa9aa2fec87ee9","unresolved":false,"context_lines":[{"line_number":101,"context_line":"redundant_import_alias_re \u003d re.compile(r\"import (?:.*\\.)?(.+) as \\1$\")"},{"line_number":102,"context_line":"yield_not_followed_by_space \u003d re.compile(r\"^\\s*yield(?:\\(|{|\\[|\\\"|\u0027).*$\")"},{"line_number":103,"context_line":"asse_regexpmatches \u003d re.compile("},{"line_number":104,"context_line":"    r\"(assertRegexpMatches|assertNotRegexpMatches)\\(\")"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"class BaseASTChecker(ast.NodeVisitor):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_435be253","line":104,"updated":"2018-10-25 13:11:51.000000000","message":"If you wanted to be clever, you could use\n\n r\"assert(Not)?RegexpMatches\\(\"","commit_id":"249174943e8a1c178b15eedc91f0fa05a34e9350"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8184d1033a6c2a6f32ca786009fa9aa2fec87ee9","unresolved":false,"context_lines":[{"line_number":845,"context_line":""},{"line_number":846,"context_line":"    N361"},{"line_number":847,"context_line":"    \"\"\""},{"line_number":848,"context_line":"    res \u003d asse_regexpmatches.search(logical_line)"},{"line_number":849,"context_line":"    if res:"},{"line_number":850,"context_line":"        yield (0, \"N361: assertRegex/assertNotRegex must be used instead \""},{"line_number":851,"context_line":"                  \"of assertRegexpMatches/assertNotRegexpMatches.\")"},{"line_number":852,"context_line":""},{"line_number":853,"context_line":""},{"line_number":854,"context_line":"def factory(register):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_ee13f558","line":851,"range":{"start_line":848,"start_character":0,"end_line":851,"end_character":67},"updated":"2018-10-25 13:11:51.000000000","message":"Or if you wanted to be really clever, you could use pattern:\n\n r\"((assert(?:Not)?Regex)pMatches)\\(\"\n\n...and then:\n\n if res:\n     yield (0, \"N361: %s must be used instead of %s\" %\n            (res.group(2), (res.group(1)))\n\nBut what you\u0027ve got is more explicit and easier to read, so ++.","commit_id":"249174943e8a1c178b15eedc91f0fa05a34e9350"}]}
