)]}'
{"tempest/hacking/black_list_T110.txt":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"f5b4f38c923a15abd2ee0c525cab0e10c6396890","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":45,"id":"da85f559_71a206ff","updated":"2015-11-11 17:53:51.000000000","message":"What about \"black_list_T110.txt\" -\u003e \"ignored_list_T110.txt\". Black list sounds a little strange :)","commit_id":"d637414b11f836a04ff662cff381ddd9da758e74"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"243f426fe6befffe9326a4c3750a20b3d0bc637a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":45,"id":"da85f559_252faba2","in_reply_to":"da85f559_71a206ff","updated":"2015-11-16 05:21:43.000000000","message":"+1 for ignored_list :-)","commit_id":"d637414b11f836a04ff662cff381ddd9da758e74"}],"tempest/hacking/checks.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"f5b4f38c923a15abd2ee0c525cab0e10c6396890","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    if \u0027tempest/services/\u0027 not in filename:"},{"line_number":157,"context_line":"        return"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    black_list \u003d []"},{"line_number":160,"context_line":"    raw_list \u003d []"},{"line_number":161,"context_line":"    for list_file in glob.glob(\u0027tempest/hacking/black_list_T110.txt\u0027):"},{"line_number":162,"context_line":"        with open(list_file, \u0027r\u0027) as f:"}],"source_content_type":"text/x-python","patch_set":45,"id":"da85f559_c0fbd6bf","line":159,"updated":"2015-11-11 17:53:51.000000000","message":"This code block\n\n    black_list \u003d []\n    raw_list \u003d []\n    for list_file in glob.glob(\u0027tempest/hacking/black_list_T110.txt\u0027):\n        with open(list_file, \u0027r\u0027) as f:\n            raw_list.extend(f.readlines())\n        for black_file in raw_list:\n            black_list.append(black_file.rstrip())\n\ncab be written shorter:\n\n    black_list \u003d []\n    with open(\u0027tempest/hacking/black_list_T110.txt\u0027) as f:\n        for line in f:\n            black_list.append(line.strip())","commit_id":"d637414b11f836a04ff662cff381ddd9da758e74"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"243f426fe6befffe9326a4c3750a20b3d0bc637a","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    if \u0027tempest/services/\u0027 not in filename:"},{"line_number":157,"context_line":"        return"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    black_list \u003d []"},{"line_number":160,"context_line":"    raw_list \u003d []"},{"line_number":161,"context_line":"    for list_file in glob.glob(\u0027tempest/hacking/black_list_T110.txt\u0027):"},{"line_number":162,"context_line":"        with open(list_file, \u0027r\u0027) as f:"}],"source_content_type":"text/x-python","patch_set":45,"id":"da85f559_450f4e2e","line":159,"in_reply_to":"da85f559_c0fbd6bf","updated":"2015-11-16 05:21:43.000000000","message":"nice suggestion, thanks!","commit_id":"d637414b11f836a04ff662cff381ddd9da758e74"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"6acfd8adab515a52fb0b66fc441a08c898776a96","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        return"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    for line in lines[line_number:]:"},{"line_number":177,"context_line":"        if METHOD.match(line) or CLASS.match(line):"},{"line_number":178,"context_line":"            # the end of a method"},{"line_number":179,"context_line":"            return"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":45,"id":"da85f559_f017ab42","line":177,"updated":"2015-11-12 08:41:24.000000000","message":"You could have a method defined within the original method, which would stop the parsing here. I guess that\u0027s unlikely for service clients though.\n\nAnother way you could detect the end of the method is by having a non-empty less indented line.","commit_id":"d637414b11f836a04ff662cff381ddd9da758e74"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"243f426fe6befffe9326a4c3750a20b3d0bc637a","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        return"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    for line in lines[line_number:]:"},{"line_number":177,"context_line":"        if METHOD.match(line) or CLASS.match(line):"},{"line_number":178,"context_line":"            # the end of a method"},{"line_number":179,"context_line":"            return"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":45,"id":"da85f559_85121608","line":177,"in_reply_to":"da85f559_f017ab42","updated":"2015-11-16 05:21:43.000000000","message":"Nice point.\nYes, if internal method exists in the method, this rule cannot detect invalid line which put after the internal method definition.\n\nSorry, I could not understand \"having a non-empty less indented line\" rightly. Is it ok to define METHOD as\n\n re.compile(r\"^\\s    def .+\")\n\nfor detecting this problem?\n(4 spaces before \"def\" for strict detecting)","commit_id":"d637414b11f836a04ff662cff381ddd9da758e74"}],"tempest/hacking/ignored_list_T110.txt":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"07e76dacc0dbac68545f87e366835bba1202ed70","unresolved":false,"context_lines":[{"line_number":1,"context_line":"./tempest/services/compute/json/server_groups_client.py"},{"line_number":2,"context_line":"./tempest/services/compute/json/servers_client.py"},{"line_number":3,"context_line":"./tempest/services/database/json/flavors_client.py"},{"line_number":4,"context_line":"./tempest/services/identity/v3/json/credentials_client.py"}],"source_content_type":"text/plain","patch_set":48,"id":"da85f559_2869bfbe","line":1,"updated":"2015-11-16 06:03:57.000000000","message":"This  should be fixed with https://review.openstack.org/#/c/245640/","commit_id":"c0d96bec352ff2058258d90247416e09704bb13c"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"8a945b0f49adc6e0e86e3a0755b92fd1b2d63860","unresolved":false,"context_lines":[{"line_number":1,"context_line":"./tempest/services/compute/json/server_groups_client.py"},{"line_number":2,"context_line":"./tempest/services/compute/json/servers_client.py"},{"line_number":3,"context_line":"./tempest/services/database/json/flavors_client.py"},{"line_number":4,"context_line":"./tempest/services/identity/v3/json/credentials_client.py"}],"source_content_type":"text/plain","patch_set":48,"id":"da85f559_99383f3f","line":1,"in_reply_to":"da85f559_2869bfbe","updated":"2015-11-16 08:25:40.000000000","message":"Well if this merges first, you\u0027ll have to update it and remove this line in the other patch.","commit_id":"c0d96bec352ff2058258d90247416e09704bb13c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7d6db6282624e4aa3de6f0e704eb65ccb3ad6874","unresolved":false,"context_lines":[{"line_number":1,"context_line":"./tempest/services/compute/json/server_groups_client.py"},{"line_number":2,"context_line":"./tempest/services/compute/json/servers_client.py"},{"line_number":3,"context_line":"./tempest/services/database/json/flavors_client.py"},{"line_number":4,"context_line":"./tempest/services/identity/v3/json/credentials_client.py"}],"source_content_type":"text/plain","patch_set":48,"id":"ba8a016a_5041ac38","line":1,"in_reply_to":"da85f559_99383f3f","updated":"2015-11-16 08:57:06.000000000","message":"Nice point.\n\nNow the gate(dvms jobs) seems bad condition, and it is difficult to pass. So it is better to merge this first.","commit_id":"c0d96bec352ff2058258d90247416e09704bb13c"}]}
