)]}'
{"HACKING.rst":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"925102d3916f96d471ead2488cd3c726909518cd","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Manila Specific Commandments"},{"line_number":10,"context_line":"----------------------------"},{"line_number":11,"context_line":"\u003c\u003c\u003c\u003c\u003c\u003c\u003c HEAD"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"- [M312] Use assertIsNone(...) instead of assertEqual(None, ...)."},{"line_number":14,"context_line":"- [M313] Use assertTrue(...) rather than assertEqual(True, ...)."}],"source_content_type":"text/x-rst","patch_set":5,"id":"bab6814e_b872abab","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":12},"updated":"2016-05-24 16:01:54.000000000","message":"this should not be here","commit_id":"71430f33601c93ac8c9062f02686a370d7434d89"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"284355f53e6ffc7ed47fb0c22f79854de749d187","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Manila Specific Commandments"},{"line_number":10,"context_line":"----------------------------"},{"line_number":11,"context_line":"\u003c\u003c\u003c\u003c\u003c\u003c\u003c HEAD"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"- [M312] Use assertIsNone(...) instead of assertEqual(None, ...)."},{"line_number":14,"context_line":"- [M313] Use assertTrue(...) rather than assertEqual(True, ...)."}],"source_content_type":"text/x-rst","patch_set":5,"id":"bab6814e_251df3bd","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":12},"in_reply_to":"bab6814e_b872abab","updated":"2016-05-24 16:40:48.000000000","message":"Woops!  Thanks.","commit_id":"71430f33601c93ac8c9062f02686a370d7434d89"}],"manila/hacking/checks.py":[{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"6f783bdf40d9bd65b5e8c63d1315a488fe3449dd","unresolved":false,"context_lines":[{"line_number":56,"context_line":"oslo_namespace_imports \u003d re.compile(r\"from[\\s]*oslo[.](.*)\")"},{"line_number":57,"context_line":"dict_constructor_with_list_copy_re \u003d re.compile(r\".*\\bdict\\((\\[)?(\\(|\\[)\")"},{"line_number":58,"context_line":"assert_no_xrange_re \u003d re.compile(r\"\\s*xrange\\s*\\(\")"},{"line_number":59,"context_line":"assert_None \u003d re.compile("},{"line_number":60,"context_line":"    r\".*assertEqual\\(None, .*\\)\")"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_7ac4e65e","line":59,"range":{"start_line":59,"start_character":7,"end_line":59,"end_character":8},"updated":"2016-05-23 22:59:54.000000000","message":"cap N looks odd, but I see why you\u0027re doing it.","commit_id":"67e275be1a6db76cdd25e30776b690953914e5d7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4f4a495c67ba414e9e33deccb765d9448871f9ad","unresolved":false,"context_lines":[{"line_number":56,"context_line":"oslo_namespace_imports \u003d re.compile(r\"from[\\s]*oslo[.](.*)\")"},{"line_number":57,"context_line":"dict_constructor_with_list_copy_re \u003d re.compile(r\".*\\bdict\\((\\[)?(\\(|\\[)\")"},{"line_number":58,"context_line":"assert_no_xrange_re \u003d re.compile(r\"\\s*xrange\\s*\\(\")"},{"line_number":59,"context_line":"assert_None \u003d re.compile("},{"line_number":60,"context_line":"    r\".*assertEqual\\(None, .*\\)\")"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_86721348","line":59,"range":{"start_line":59,"start_character":7,"end_line":59,"end_character":8},"in_reply_to":"bab6814e_062aa32c","updated":"2016-05-24 02:15:50.000000000","message":"Oh.. the literal, None.","commit_id":"67e275be1a6db76cdd25e30776b690953914e5d7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e62a4038d110b58b4bc41c45afcb022d8685795b","unresolved":false,"context_lines":[{"line_number":56,"context_line":"oslo_namespace_imports \u003d re.compile(r\"from[\\s]*oslo[.](.*)\")"},{"line_number":57,"context_line":"dict_constructor_with_list_copy_re \u003d re.compile(r\".*\\bdict\\((\\[)?(\\(|\\[)\")"},{"line_number":58,"context_line":"assert_no_xrange_re \u003d re.compile(r\"\\s*xrange\\s*\\(\")"},{"line_number":59,"context_line":"assert_None \u003d re.compile("},{"line_number":60,"context_line":"    r\".*assertEqual\\(None, .*\\)\")"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_062aa32c","line":59,"range":{"start_line":59,"start_character":7,"end_line":59,"end_character":8},"in_reply_to":"bab6814e_7ac4e65e","updated":"2016-05-24 02:13:32.000000000","message":"why not small case.. I\u0027m missing something? https://www.python.org/dev/peps/pep-0008/#descriptive-naming-styles","commit_id":"67e275be1a6db76cdd25e30776b690953914e5d7"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"54731a73359af47070e8d4823a589b0429f34a96","unresolved":false,"context_lines":[{"line_number":57,"context_line":"dict_constructor_with_list_copy_re \u003d re.compile(r\".*\\bdict\\((\\[)?(\\(|\\[)\")"},{"line_number":58,"context_line":"assert_no_xrange_re \u003d re.compile(r\"\\s*xrange\\s*\\(\")"},{"line_number":59,"context_line":"assert_None \u003d re.compile("},{"line_number":60,"context_line":"    r\".*assertEqual\\(None, .*\\)\")"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"class BaseASTChecker(ast.NodeVisitor):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_182af0e7","line":60,"range":{"start_line":60,"start_character":4,"end_line":60,"end_character":33},"updated":"2016-05-24 10:05:21.000000000","message":"I suspect it won\u0027t catch \"self.assertEqual(FOO, None)\".","commit_id":"67e275be1a6db76cdd25e30776b690953914e5d7"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"6e432ab81f021523b5201beff4e1ca6179020400","unresolved":false,"context_lines":[{"line_number":57,"context_line":"dict_constructor_with_list_copy_re \u003d re.compile(r\".*\\bdict\\((\\[)?(\\(|\\[)\")"},{"line_number":58,"context_line":"assert_no_xrange_re \u003d re.compile(r\"\\s*xrange\\s*\\(\")"},{"line_number":59,"context_line":"assert_None \u003d re.compile("},{"line_number":60,"context_line":"    r\".*assertEqual\\(None, .*\\)\")"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"class BaseASTChecker(ast.NodeVisitor):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_cc40ab38","line":60,"range":{"start_line":60,"start_character":4,"end_line":60,"end_character":33},"in_reply_to":"bab6814e_182af0e7","updated":"2016-05-24 10:56:42.000000000","message":"If the value of FOO is anything other than None then the assertEqual will fail anyways so either the test will have to be changed or the functional code will have to be changed so that FOO has value None.\n\nIf FOO has value None then the regex catches it and the hacking rule triggers.","commit_id":"67e275be1a6db76cdd25e30776b690953914e5d7"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"4fff5d4392f04f55c95618128c3fa45a0ad9d43f","unresolved":false,"context_lines":[{"line_number":56,"context_line":"oslo_namespace_imports \u003d re.compile(r\"from[\\s]*oslo[.](.*)\")"},{"line_number":57,"context_line":"dict_constructor_with_list_copy_re \u003d re.compile(r\".*\\bdict\\((\\[)?(\\(|\\[)\")"},{"line_number":58,"context_line":"assert_no_xrange_re \u003d re.compile(r\"\\s*xrange\\s*\\(\")"},{"line_number":59,"context_line":"assert_True \u003d re.compile("},{"line_number":60,"context_line":"    r\".*assertEqual\\(True, .*\\)\")"},{"line_number":61,"context_line":"assert_None \u003d re.compile("},{"line_number":62,"context_line":"    r\".*assertEqual\\(None, .*\\)\")"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"class BaseASTChecker(ast.NodeVisitor):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_586c5f9c","line":62,"range":{"start_line":59,"start_character":0,"end_line":62,"end_character":33},"updated":"2016-05-24 16:03:56.000000000","message":"nit: this fits one line, hadn\u0027t noticed in the other patch, could you change this now?","commit_id":"71430f33601c93ac8c9062f02686a370d7434d89"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"284355f53e6ffc7ed47fb0c22f79854de749d187","unresolved":false,"context_lines":[{"line_number":56,"context_line":"oslo_namespace_imports \u003d re.compile(r\"from[\\s]*oslo[.](.*)\")"},{"line_number":57,"context_line":"dict_constructor_with_list_copy_re \u003d re.compile(r\".*\\bdict\\((\\[)?(\\(|\\[)\")"},{"line_number":58,"context_line":"assert_no_xrange_re \u003d re.compile(r\"\\s*xrange\\s*\\(\")"},{"line_number":59,"context_line":"assert_True \u003d re.compile("},{"line_number":60,"context_line":"    r\".*assertEqual\\(True, .*\\)\")"},{"line_number":61,"context_line":"assert_None \u003d re.compile("},{"line_number":62,"context_line":"    r\".*assertEqual\\(None, .*\\)\")"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"class BaseASTChecker(ast.NodeVisitor):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_c58227c8","line":62,"range":{"start_line":59,"start_character":0,"end_line":62,"end_character":33},"in_reply_to":"bab6814e_586c5f9c","updated":"2016-05-24 16:40:48.000000000","message":"Sure thing.","commit_id":"71430f33601c93ac8c9062f02686a370d7434d89"}],"manila/tests/test_hacking.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"54731a73359af47070e8d4823a589b0429f34a96","unresolved":false,"context_lines":[{"line_number":249,"context_line":"        self.assertEqual(0, len(list(checks.validate_assertIsNone("},{"line_number":250,"context_line":"            \"assertIsNone(None)\"))))"},{"line_number":251,"context_line":"        self.assertEqual(1, len(list(checks.validate_assertIsNone("},{"line_number":252,"context_line":"            \"assertEqual(None, %s)\" % test_value))))"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_783b3c39","line":252,"range":{"start_line":252,"start_character":12,"end_line":252,"end_character":52},"updated":"2016-05-24 10:05:21.000000000","message":"What about \"assertEqual(%s, None)\"?","commit_id":"67e275be1a6db76cdd25e30776b690953914e5d7"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"6e432ab81f021523b5201beff4e1ca6179020400","unresolved":false,"context_lines":[{"line_number":249,"context_line":"        self.assertEqual(0, len(list(checks.validate_assertIsNone("},{"line_number":250,"context_line":"            \"assertIsNone(None)\"))))"},{"line_number":251,"context_line":"        self.assertEqual(1, len(list(checks.validate_assertIsNone("},{"line_number":252,"context_line":"            \"assertEqual(None, %s)\" % test_value))))"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_8c34e34a","line":252,"range":{"start_line":252,"start_character":12,"end_line":252,"end_character":52},"in_reply_to":"bab6814e_783b3c39","updated":"2016-05-24 10:56:42.000000000","message":"Please see the previous reply.","commit_id":"67e275be1a6db76cdd25e30776b690953914e5d7"}]}
