)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"f82598a1ff295c14aa3f890d8fb36eafddb89302","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use new-style Python classes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are some classes in the code do not inherit from anything"},{"line_number":10,"context_line":"and thus will be an old-style class by default. New style class"},{"line_number":11,"context_line":"should always inherit from `object` or another new-style class."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"da6ed579_c9c9d627","line":9,"updated":"2016-01-14 10:25:38.000000000","message":"There are some classes in the code that didn\u0027t inherited from nothing.. Just in msg strange building of sentence as for me. Also there is difference between from nothing and d from anything","commit_id":"ab706b7289b1d2ff61e0794635edac3e724c939d"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"5f14dc76449b8b03f7e6341db5615f1b76060589","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use new-style Python classes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are some classes in the code do not inherit from anything"},{"line_number":10,"context_line":"and thus will be an old-style class by default. New style class"},{"line_number":11,"context_line":"should always inherit from `object` or another new-style class."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a68dd71_a4499290","line":9,"in_reply_to":"da6ed579_c9c9d627","updated":"2016-01-27 01:11:36.000000000","message":"Done","commit_id":"ab706b7289b1d2ff61e0794635edac3e724c939d"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"f82598a1ff295c14aa3f890d8fb36eafddb89302","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Use new-style Python classes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are some classes in the code do not inherit from anything"},{"line_number":10,"context_line":"and thus will be an old-style class by default. New style class"},{"line_number":11,"context_line":"should always inherit from `object` or another new-style class."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Hacking rule added as well."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"da6ed579_490f2637","line":10,"updated":"2016-01-14 10:25:38.000000000","message":"This is an old-style classes. A \"New Class\" is the recommended way to create a class in modern Python.","commit_id":"ab706b7289b1d2ff61e0794635edac3e724c939d"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"5f14dc76449b8b03f7e6341db5615f1b76060589","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Use new-style Python classes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are some classes in the code do not inherit from anything"},{"line_number":10,"context_line":"and thus will be an old-style class by default. New style class"},{"line_number":11,"context_line":"should always inherit from `object` or another new-style class."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Hacking rule added as well."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a68dd71_4409b630","line":10,"in_reply_to":"da6ed579_490f2637","updated":"2016-01-27 01:11:36.000000000","message":"Done","commit_id":"ab706b7289b1d2ff61e0794635edac3e724c939d"},{"author":{"_account_id":11208,"name":"Baohua Yang","email":"baohua@linux.vnet.ibm.com","username":"yangbaohua"},"change_message_id":"eaeb0486b8ec7afbaa6281df5b586cdd0f0d418e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use new-style Python classes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are some classes in the code that didn\u0027t inherited from"},{"line_number":10,"context_line":"nothing and this is an old-style classes. A \"New Class\" is the"},{"line_number":11,"context_line":"recommended way to create a class in modern Python.A \"New Class\""},{"line_number":12,"context_line":"should always inherit from `object` or another new-style class."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"7a5de9d1_aa38b5d3","line":9,"range":{"start_line":9,"start_character":40,"end_line":9,"end_character":56},"updated":"2016-02-02 03:29:00.000000000","message":"inherit","commit_id":"e4427b2efa4e3719f4b8a19caf51a976e5c0fe8d"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"d132857549e4498651e1ee20dd4d25250eee72b5","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Use new-style Python classes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are some classes in the code that didn\u0027t inherited from"},{"line_number":10,"context_line":"nothing and this is an old-style classes. A \"New Class\" is the"},{"line_number":11,"context_line":"recommended way to create a class in modern Python.A \"New Class\""},{"line_number":12,"context_line":"should always inherit from `object` or another new-style class."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"bae84128_06261e68","line":10,"updated":"2016-02-19 09:38:20.000000000","message":"s/nothing/anything/","commit_id":"2db0da8278d18289d69eef26aa6684cdc29df9aa"}],"tests/hacking/README.rst":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"f82598a1ff295c14aa3f890d8fb36eafddb89302","unresolved":false,"context_lines":[{"line_number":29,"context_line":"* [N353] - Ensure that unicode() function is not uset because of absence in py3"},{"line_number":30,"context_line":"* [N354] - Ensure that ``:raises: Exception`` is not used"},{"line_number":31,"context_line":"* [N355] - Avoid ``None`` as a redundant second argument to ``dict.get()``"},{"line_number":32,"context_line":"* [N356] - Use new-style Python classes"},{"line_number":33,"context_line":"* [N360-N370] - Reserved for rules related to CLI"},{"line_number":34,"context_line":" * [N360] - Ensure that CLI modules do not use ``rally.common.db``"},{"line_number":35,"context_line":" * [N361] - Ensure that CLI modules do not use ``rally.common.objects``"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da6ed579_3f8c64d9","line":32,"updated":"2016-01-14 10:25:38.000000000","message":"Ensure that we use only \"new-style\" Python classes","commit_id":"ab706b7289b1d2ff61e0794635edac3e724c939d"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"5f14dc76449b8b03f7e6341db5615f1b76060589","unresolved":false,"context_lines":[{"line_number":29,"context_line":"* [N353] - Ensure that unicode() function is not uset because of absence in py3"},{"line_number":30,"context_line":"* [N354] - Ensure that ``:raises: Exception`` is not used"},{"line_number":31,"context_line":"* [N355] - Avoid ``None`` as a redundant second argument to ``dict.get()``"},{"line_number":32,"context_line":"* [N356] - Use new-style Python classes"},{"line_number":33,"context_line":"* [N360-N370] - Reserved for rules related to CLI"},{"line_number":34,"context_line":" * [N360] - Ensure that CLI modules do not use ``rally.common.db``"},{"line_number":35,"context_line":" * [N361] - Ensure that CLI modules do not use ``rally.common.objects``"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a68dd71_4f3eafb9","line":32,"in_reply_to":"da6ed579_3f8c64d9","updated":"2016-01-27 01:11:36.000000000","message":"Done","commit_id":"ab706b7289b1d2ff61e0794635edac3e724c939d"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"c4383806329816307368b082c3d6eb6b51461fb2","unresolved":false,"context_lines":[{"line_number":29,"context_line":"* [N353] - Ensure that unicode() function is not uset because of absence in py3"},{"line_number":30,"context_line":"* [N354] - Ensure that ``:raises: Exception`` is not used"},{"line_number":31,"context_line":"* [N355] - Avoid ``None`` as a redundant second argument to ``dict.get()``"},{"line_number":32,"context_line":"* [N356] - Use new-style Python classes"},{"line_number":33,"context_line":"* [N360-N370] - Reserved for rules related to CLI"},{"line_number":34,"context_line":" * [N360] - Ensure that CLI modules do not use ``rally.common.db``"},{"line_number":35,"context_line":" * [N361] - Ensure that CLI modules do not use ``rally.common.objects``"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a68dd71_fc2e6df9","line":32,"in_reply_to":"da6ed579_3f8c64d9","updated":"2016-01-26 09:57:44.000000000","message":"This is not critical but I think it worth to write as Roman said","commit_id":"ab706b7289b1d2ff61e0794635edac3e724c939d"}],"tests/hacking/checks.py":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"f82598a1ff295c14aa3f890d8fb36eafddb89302","unresolved":false,"context_lines":[{"line_number":64,"context_line":"re_db_import \u003d re.compile(r\"^from rally.common import db\")"},{"line_number":65,"context_line":"re_objects_import \u003d re.compile(r\"^from rally.common import objects\")"},{"line_number":66,"context_line":"re_dict_get_with_none \u003d re.compile(r\"\\.get\\(\\\"*\\w+\\\"*, None\\)\")"},{"line_number":67,"context_line":"re_old_type_class \u003d re.compile(r\"^\\s*class \\w+\\(*\\)*:\")"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"def skip_ignored_lines(func):"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6ed579_df8f4828","line":67,"updated":"2016-01-14 10:25:38.000000000","message":"Why we use star after parenthesis? Therefore valid string here is :`    class Test(((()))):` I undestand that this will not compile. But why you use them? \nAlso there is one more case of usage old-style class http://ideone.com/fork/wu9u9B \u003d)","commit_id":"ab706b7289b1d2ff61e0794635edac3e724c939d"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"5f14dc76449b8b03f7e6341db5615f1b76060589","unresolved":false,"context_lines":[{"line_number":64,"context_line":"re_db_import \u003d re.compile(r\"^from rally.common import db\")"},{"line_number":65,"context_line":"re_objects_import \u003d re.compile(r\"^from rally.common import objects\")"},{"line_number":66,"context_line":"re_dict_get_with_none \u003d re.compile(r\"\\.get\\(\\\"*\\w+\\\"*, None\\)\")"},{"line_number":67,"context_line":"re_old_type_class \u003d re.compile(r\"^\\s*class \\w+\\(*\\)*:\")"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"def skip_ignored_lines(func):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a68dd71_ef8f6373","line":67,"in_reply_to":"9a68dd71_bcd475bd","updated":"2016-01-27 01:11:36.000000000","message":"Yes, (\\(\\))? is more accurate !  Thanks !","commit_id":"ab706b7289b1d2ff61e0794635edac3e724c939d"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"c4383806329816307368b082c3d6eb6b51461fb2","unresolved":false,"context_lines":[{"line_number":64,"context_line":"re_db_import \u003d re.compile(r\"^from rally.common import db\")"},{"line_number":65,"context_line":"re_objects_import \u003d re.compile(r\"^from rally.common import objects\")"},{"line_number":66,"context_line":"re_dict_get_with_none \u003d re.compile(r\"\\.get\\(\\\"*\\w+\\\"*, None\\)\")"},{"line_number":67,"context_line":"re_old_type_class \u003d re.compile(r\"^\\s*class \\w+\\(*\\)*:\")"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"def skip_ignored_lines(func):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a68dd71_b08019f9","line":67,"in_reply_to":"da6ed579_df8f4828","updated":"2016-01-26 09:57:44.000000000","message":"@Roman, your example (http://ideone.com/fork/wu9u9B) is good, however this case requires multiline processing, which looks a bit more complicated for implementation. Maybe skip this case for now?","commit_id":"ab706b7289b1d2ff61e0794635edac3e724c939d"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"f9f13924bdf5c0d35777dd1bec6a5df067b77b3c","unresolved":false,"context_lines":[{"line_number":64,"context_line":"re_db_import \u003d re.compile(r\"^from rally.common import db\")"},{"line_number":65,"context_line":"re_objects_import \u003d re.compile(r\"^from rally.common import objects\")"},{"line_number":66,"context_line":"re_dict_get_with_none \u003d re.compile(r\"\\.get\\(\\\"*\\w+\\\"*, None\\)\")"},{"line_number":67,"context_line":"re_old_type_class \u003d re.compile(r\"^\\s*class \\w+\\(*\\)*:\")"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"def skip_ignored_lines(func):"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6ed579_efe348d7","line":67,"in_reply_to":"da6ed579_df8f4828","updated":"2016-01-15 02:34:51.000000000","message":"\\(* is used to match cases ``class A:``\n\n\nFor  http://ideone.com/fork/wu9u9B , I do not know how to check the second line with the first line at the same time. Any suggestions ?","commit_id":"ab706b7289b1d2ff61e0794635edac3e724c939d"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"c4383806329816307368b082c3d6eb6b51461fb2","unresolved":false,"context_lines":[{"line_number":64,"context_line":"re_db_import \u003d re.compile(r\"^from rally.common import db\")"},{"line_number":65,"context_line":"re_objects_import \u003d re.compile(r\"^from rally.common import objects\")"},{"line_number":66,"context_line":"re_dict_get_with_none \u003d re.compile(r\"\\.get\\(\\\"*\\w+\\\"*, None\\)\")"},{"line_number":67,"context_line":"re_old_type_class \u003d re.compile(r\"^\\s*class \\w+\\(*\\)*:\")"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"def skip_ignored_lines(func):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a68dd71_bcd475bd","line":67,"in_reply_to":"da6ed579_efe348d7","updated":"2016-01-26 09:57:44.000000000","message":"Current regex seems to be enough, however this looks a bit more accurate:\n\n re.compile(r\"^\\s*class \\w+(\\(\\))?:\")","commit_id":"ab706b7289b1d2ff61e0794635edac3e724c939d"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"67b80723cadcae5865bffc912c53e4258defc337","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    r\"\\s:raise[^s] *.*$|\\s:raises *:.*$|\\s:raises *[^:]+$\")"},{"line_number":64,"context_line":"re_db_import \u003d re.compile(r\"^from rally.common import db\")"},{"line_number":65,"context_line":"re_objects_import \u003d re.compile(r\"^from rally.common import objects\")"},{"line_number":66,"context_line":"re_old_type_class \u003d re.compile(r\"^\\s*class \\w+(\\(\\))?:\")"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"def skip_ignored_lines(func):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_6ce40f0d","line":66,"range":{"start_line":66,"start_character":43,"end_line":66,"end_character":44},"updated":"2016-01-27 10:16:59.000000000","message":"r\"^\\s*class \\w+\\s*(\\(\\))?:\"\n\nPlease at least add a whitespaces after the class name. \n\nOr we gonna miss acase like\nclass A       ():\n   pass\n\nThere are other places where whitespaces could appear, but those are covered by PEP8 checker.\n\nActually I\u0027d prefer to see a regexp that catches all possible situations, just for a case))\nLike, r\"^\\s*class\\s+\\w+\\s*(\\(\\s*\\))?\\s*:\"","commit_id":"0b269e82666e14f90f465ede43da720e1ecbcfba"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"8b3260be2583e6c077b769bb554e041d3d22420e","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    r\"\\s:raise[^s] *.*$|\\s:raises *:.*$|\\s:raises *[^:]+$\")"},{"line_number":64,"context_line":"re_db_import \u003d re.compile(r\"^from rally.common import db\")"},{"line_number":65,"context_line":"re_objects_import \u003d re.compile(r\"^from rally.common import objects\")"},{"line_number":66,"context_line":"re_old_type_class \u003d re.compile(r\"^\\s*class\\s+\\w+\\s*(\\(\\s*\\))?\\s*:\")"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"def skip_ignored_lines(func):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a5de9d1_900f3236","line":66,"updated":"2016-02-02 01:10:58.000000000","message":"re_old_style_class","commit_id":"82840fd37876dfb1aaca87e6d50359818f1f5e36"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"8b3260be2583e6c077b769bb554e041d3d22420e","unresolved":false,"context_lines":[{"line_number":495,"context_line":""},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"@skip_ignored_lines"},{"line_number":498,"context_line":"def check_old_type_class(logical_line, physical_line, filename):"},{"line_number":499,"context_line":"    \"\"\"Use new-style Python classes"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"    N355"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a5de9d1_93165c4a","line":498,"updated":"2016-02-02 01:10:58.000000000","message":"check_old_style_class","commit_id":"82840fd37876dfb1aaca87e6d50359818f1f5e36"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"1cf962a981dd9d0ec6943003ae03aa0fe07fb5aa","unresolved":false,"context_lines":[{"line_number":495,"context_line":""},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"@skip_ignored_lines"},{"line_number":498,"context_line":"def check_old_style_class(logical_line, physical_line, filename):"},{"line_number":499,"context_line":"    \"\"\"Use new-style Python classes"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"    N355"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a5de9d1_fd15fd48","line":498,"updated":"2016-02-02 14:42:37.000000000","message":"Please move this function N355 immediately after N354 - to line 469","commit_id":"bab3511b54d9236847c21e5b59eeced8c2811972"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"7f6c138717b601b2b30985e21e8e47e25a8bc8a3","unresolved":false,"context_lines":[{"line_number":495,"context_line":""},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"@skip_ignored_lines"},{"line_number":498,"context_line":"def check_old_style_class(logical_line, physical_line, filename):"},{"line_number":499,"context_line":"    \"\"\"Use new-style Python classes"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"    N355"}],"source_content_type":"text/x-python","patch_set":8,"id":"bae84128_009f2604","line":498,"in_reply_to":"7a5de9d1_fd15fd48","updated":"2016-02-19 08:50:17.000000000","message":"Done","commit_id":"bab3511b54d9236847c21e5b59eeced8c2811972"}]}
