)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"06b17ce1355a7f1f60f57286e46d6571f35bdc39","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"- assertTrue(isinstance(A, class A))"},{"line_number":12,"context_line":"- assertEqual(A, None) or assertEqual(None, A)"},{"line_number":13,"context_line":"- assertEquall(False, A) or assertEqual(True, A)"},{"line_number":14,"context_line":"- assertEqual(a in b, True) or assertEqual(a in b, False)"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This patch introduce hacking rules just above."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa80f949_7699166e","line":13,"updated":"2015-11-04 12:13:18.000000000","message":"Typo, but doesn\u0027t matter.","commit_id":"83a9802ac1e5564904c856545f397c54c3cfada6"},{"author":{"_account_id":8157,"name":"Bertrand LALLAU","email":"bertrand.lallau@gmail.com","username":"blallau"},"change_message_id":"3c46fc80291756d1a37b8d2566d1cccad1686287","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"- assertTrue(isinstance(A, class A))"},{"line_number":12,"context_line":"- assertEqual(A, None) or assertEqual(None, A)"},{"line_number":13,"context_line":"- assertEquall(False, A) or assertEqual(True, A)"},{"line_number":14,"context_line":"- assertEqual(a in b, True) or assertEqual(a in b, False)"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This patch introduce hacking rules just above."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa80f949_831477f5","line":13,"in_reply_to":"fa80f949_7699166e","updated":"2015-11-05 08:01:58.000000000","message":"Done","commit_id":"83a9802ac1e5564904c856545f397c54c3cfada6"}],"HACKING.rst":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"06b17ce1355a7f1f60f57286e46d6571f35bdc39","unresolved":false,"context_lines":[{"line_number":11,"context_line":"- [O316] Change assertTrue(isinstance(A, B)) by optimal assert like"},{"line_number":12,"context_line":"  assertIsInstance(A, B)."},{"line_number":13,"context_line":"- [O318] Change assertEqual(A, None) or assertEqual(None, A) by optimal"},{"line_number":14,"context_line":"  assert like assertIsNone(A)"},{"line_number":15,"context_line":"- [O320] Validate that LOG messages, except debug ones, have translations"},{"line_number":16,"context_line":"- [O334] Change assertTrue/False(A in/not in B, message) to the more specific"},{"line_number":17,"context_line":"  assertIn/NotIn(A, B, message)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa80f949_56cf3256","line":14,"updated":"2015-11-04 12:13:18.000000000","message":"You already added this separately in https://review.openstack.org/#/c/239719/ so this may cause merge conflicts? Unless it is smart enough to notice it\u0027s exactly the same...","commit_id":"83a9802ac1e5564904c856545f397c54c3cfada6"},{"author":{"_account_id":8157,"name":"Bertrand LALLAU","email":"bertrand.lallau@gmail.com","username":"blallau"},"change_message_id":"3c46fc80291756d1a37b8d2566d1cccad1686287","unresolved":false,"context_lines":[{"line_number":11,"context_line":"- [O316] Change assertTrue(isinstance(A, B)) by optimal assert like"},{"line_number":12,"context_line":"  assertIsInstance(A, B)."},{"line_number":13,"context_line":"- [O318] Change assertEqual(A, None) or assertEqual(None, A) by optimal"},{"line_number":14,"context_line":"  assert like assertIsNone(A)"},{"line_number":15,"context_line":"- [O320] Validate that LOG messages, except debug ones, have translations"},{"line_number":16,"context_line":"- [O334] Change assertTrue/False(A in/not in B, message) to the more specific"},{"line_number":17,"context_line":"  assertIn/NotIn(A, B, message)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa80f949_c3bfdfce","line":14,"in_reply_to":"fa80f949_56cf3256","updated":"2015-11-05 08:01:58.000000000","message":"good catch, thank you Adam","commit_id":"83a9802ac1e5564904c856545f397c54c3cfada6"}],"octavia/hacking/checks.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"54f97537baafa2fecbfbd9aeef66de1fb62a019e","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    O316"},{"line_number":145,"context_line":"    \"\"\""},{"line_number":146,"context_line":"    if asse_trueinst_re.match(logical_line):"},{"line_number":147,"context_line":"        yield (0, \"N316: assertTrue(isinstance(a, b)) sentences not allowed\")"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"def assert_equal_none(logical_line):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a26ad4f_56500ed4","line":147,"range":{"start_line":147,"start_character":19,"end_line":147,"end_character":23},"updated":"2015-11-02 15:55:12.000000000","message":"O316?","commit_id":"f4e39ad3333ba8dd4050076a2ff8ae4ad5497f82"},{"author":{"_account_id":8157,"name":"Bertrand LALLAU","email":"bertrand.lallau@gmail.com","username":"blallau"},"change_message_id":"6f5029b7c513ed7af7f1d03fab32e96dd23c601c","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    O316"},{"line_number":145,"context_line":"    \"\"\""},{"line_number":146,"context_line":"    if asse_trueinst_re.match(logical_line):"},{"line_number":147,"context_line":"        yield (0, \"N316: assertTrue(isinstance(a, b)) sentences not allowed\")"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"def assert_equal_none(logical_line):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a26ad4f_813c22c9","line":147,"in_reply_to":"1a26ad4f_56500ed4","updated":"2015-11-05 08:02:15.000000000","message":"Done","commit_id":"f4e39ad3333ba8dd4050076a2ff8ae4ad5497f82"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"54f97537baafa2fecbfbd9aeef66de1fb62a019e","unresolved":false,"context_lines":[{"line_number":181,"context_line":"    res \u003d (asse_equal_in_start_with_true_or_false_re.search(logical_line) or"},{"line_number":182,"context_line":"           asse_equal_in_end_with_true_or_false_re.search(logical_line))"},{"line_number":183,"context_line":"    if res:"},{"line_number":184,"context_line":"        yield (0, \"N338: Use assertIn/NotIn(A, B) rather than \""},{"line_number":185,"context_line":"               \"assertEqual(A in B, True/False) when checking collection \""},{"line_number":186,"context_line":"               \"contents.\")"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a26ad4f_160cd6eb","line":184,"range":{"start_line":184,"start_character":19,"end_line":184,"end_character":23},"updated":"2015-11-02 15:55:12.000000000","message":"O338?","commit_id":"f4e39ad3333ba8dd4050076a2ff8ae4ad5497f82"},{"author":{"_account_id":8157,"name":"Bertrand LALLAU","email":"bertrand.lallau@gmail.com","username":"blallau"},"change_message_id":"6f5029b7c513ed7af7f1d03fab32e96dd23c601c","unresolved":false,"context_lines":[{"line_number":181,"context_line":"    res \u003d (asse_equal_in_start_with_true_or_false_re.search(logical_line) or"},{"line_number":182,"context_line":"           asse_equal_in_end_with_true_or_false_re.search(logical_line))"},{"line_number":183,"context_line":"    if res:"},{"line_number":184,"context_line":"        yield (0, \"N338: Use assertIn/NotIn(A, B) rather than \""},{"line_number":185,"context_line":"               \"assertEqual(A in B, True/False) when checking collection \""},{"line_number":186,"context_line":"               \"contents.\")"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a26ad4f_a1391ed9","line":184,"in_reply_to":"1a26ad4f_160cd6eb","updated":"2015-11-05 08:02:15.000000000","message":"Done","commit_id":"f4e39ad3333ba8dd4050076a2ff8ae4ad5497f82"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"54f97537baafa2fecbfbd9aeef66de1fb62a019e","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    register(assert_true_instance)"},{"line_number":195,"context_line":"    register(assert_equal_none)"},{"line_number":196,"context_line":"    register(assert_equal_true_or_false)"},{"line_number":197,"context_line":"    register(assert_equal_in)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a26ad4f_d6adfe9b","line":197,"updated":"2015-11-02 15:55:12.000000000","message":"i tend to think it\u0027s better to keep this module sync with neutron.\nie. add new rules to neutron too.\nhow do you think?","commit_id":"f4e39ad3333ba8dd4050076a2ff8ae4ad5497f82"},{"author":{"_account_id":8157,"name":"Bertrand LALLAU","email":"bertrand.lallau@gmail.com","username":"blallau"},"change_message_id":"6f5029b7c513ed7af7f1d03fab32e96dd23c601c","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    register(assert_true_instance)"},{"line_number":195,"context_line":"    register(assert_equal_none)"},{"line_number":196,"context_line":"    register(assert_equal_true_or_false)"},{"line_number":197,"context_line":"    register(assert_equal_in)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a26ad4f_217bce8d","line":197,"in_reply_to":"1a26ad4f_d6adfe9b","updated":"2015-11-05 08:02:15.000000000","message":"Yes, i think so, but it\u0027s not related to this change","commit_id":"f4e39ad3333ba8dd4050076a2ff8ae4ad5497f82"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"06b17ce1355a7f1f60f57286e46d6571f35bdc39","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    }"},{"line_number":56,"context_line":"    log_translation_hints.append(re.compile(r))"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"asse_trueinst_re \u003d re.compile("},{"line_number":59,"context_line":"    r\"(.)*assertTrue\\(isinstance\\((\\w|\\.|\\\u0027|\\\"|\\[|\\])+, \""},{"line_number":60,"context_line":"    \"(\\w|\\.|\\\u0027|\\\"|\\[|\\])+\\)\\)\")"},{"line_number":61,"context_line":"asse_equal_in_end_with_true_or_false_re \u003d re.compile("}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_16f0ca8f","line":58,"updated":"2015-11-04 12:13:18.000000000","message":"Just curious, why are these names truncated?","commit_id":"83a9802ac1e5564904c856545f397c54c3cfada6"},{"author":{"_account_id":8157,"name":"Bertrand LALLAU","email":"bertrand.lallau@gmail.com","username":"blallau"},"change_message_id":"3c46fc80291756d1a37b8d2566d1cccad1686287","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    }"},{"line_number":56,"context_line":"    log_translation_hints.append(re.compile(r))"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"asse_trueinst_re \u003d re.compile("},{"line_number":59,"context_line":"    r\"(.)*assertTrue\\(isinstance\\((\\w|\\.|\\\u0027|\\\"|\\[|\\])+, \""},{"line_number":60,"context_line":"    \"(\\w|\\.|\\\u0027|\\\"|\\[|\\])+\\)\\)\")"},{"line_number":61,"context_line":"asse_equal_in_end_with_true_or_false_re \u003d re.compile("}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_839eb754","line":58,"in_reply_to":"fa80f949_16f0ca8f","updated":"2015-11-05 08:01:58.000000000","message":"No valid reason","commit_id":"83a9802ac1e5564904c856545f397c54c3cfada6"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"aa96bc0459c030343733f32f16d6c474d3cd3713","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    r\"assertEqual\\((\\w|[][.\u0027\\\"])+ in (\\w|[][.\u0027\\\", ])+, (True|False)\\)\")"},{"line_number":63,"context_line":"assert_equal_in_start_with_true_or_false_re \u003d re.compile("},{"line_number":64,"context_line":"    r\"assertEqual\\((True|False), (\\w|[][.\u0027\\\"])+ in (\\w|[][.\u0027\\\", ])+\\)\")"},{"line_number":65,"context_line":"assert_equal_end_with_none_re \u003d re.compile("},{"line_number":66,"context_line":"    r\"(.)*assertEqual\\((\\w|\\.|\\\u0027|\\\"|\\[|\\])+, None\\)\")"},{"line_number":67,"context_line":"assert_equal_start_with_none_re \u003d re.compile("},{"line_number":68,"context_line":"    r\"(.)*assertEqual\\(None, (\\w|\\.|\\\u0027|\\\"|\\[|\\])+\\)\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa80f949_46753dc9","line":65,"updated":"2015-11-04 13:33:59.000000000","message":"These definitions are also part of https://review.openstack.org/#/c/239719/7/octavia/hacking/checks.py,cm","commit_id":"92b02129b821d52e20467f79adf156d6ed664040"}],"tox.ini":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"06b17ce1355a7f1f60f57286e46d6571f35bdc39","unresolved":false,"context_lines":[{"line_number":46,"context_line":"[flake8]"},{"line_number":47,"context_line":"# Ignoring O321 because it\u0027s unnecessarily restricting use of json package."},{"line_number":48,"context_line":"# jsonutils version doesn\u0027t add additional value"},{"line_number":49,"context_line":"ignore \u003d O321,H405"},{"line_number":50,"context_line":"show-source \u003d true"},{"line_number":51,"context_line":"builtins \u003d _"},{"line_number":52,"context_line":"exclude \u003d .venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,tools,.ropeproject,rally-scenarios"}],"source_content_type":"text/x-properties","patch_set":3,"id":"fa80f949_3655ce4f","line":49,"updated":"2015-11-04 12:13:18.000000000","message":"Why are we ignoring H405? Not mentioned in commit message at all, and I think it is useful?","commit_id":"83a9802ac1e5564904c856545f397c54c3cfada6"},{"author":{"_account_id":8157,"name":"Bertrand LALLAU","email":"bertrand.lallau@gmail.com","username":"blallau"},"change_message_id":"3c46fc80291756d1a37b8d2566d1cccad1686287","unresolved":false,"context_lines":[{"line_number":46,"context_line":"[flake8]"},{"line_number":47,"context_line":"# Ignoring O321 because it\u0027s unnecessarily restricting use of json package."},{"line_number":48,"context_line":"# jsonutils version doesn\u0027t add additional value"},{"line_number":49,"context_line":"ignore \u003d O321,H405"},{"line_number":50,"context_line":"show-source \u003d true"},{"line_number":51,"context_line":"builtins \u003d _"},{"line_number":52,"context_line":"exclude \u003d .venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,tools,.ropeproject,rally-scenarios"}],"source_content_type":"text/x-properties","patch_set":3,"id":"fa80f949_039167f0","line":49,"in_reply_to":"fa80f949_3655ce4f","updated":"2015-11-05 08:01:58.000000000","message":"Done","commit_id":"83a9802ac1e5564904c856545f397c54c3cfada6"}]}
