)]}'
{"hacking/checks/comments.py":[{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"190ff4a11169ff3c84d784b85235df59100b273e","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    # don\u0027t work about init files for now"},{"line_number":81,"context_line":"    # TODO(sdague): enforce license in init file if it\u0027s not empty of content"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    # skip files that are \u003c 10 lines, which isn\u0027t enough for a license to fit"},{"line_number":84,"context_line":"    # this allows us to handle empty files, as well as not fail on the Okay"},{"line_number":85,"context_line":"    # doctests."},{"line_number":86,"context_line":"    if line_number is 1 and len(lines) \u003e 10 and _project_is_apache():"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_6c15c63d","line":83,"updated":"2018-10-12 14:14:58.000000000","message":"We\u0027re going to need to change this behavior too if we\u0027re using a single license line.","commit_id":"85cdbdf408c57650e43d3e36f0786aa4b772bf26"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"190ff4a11169ff3c84d784b85235df59100b273e","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    # skip files that are \u003c 10 lines, which isn\u0027t enough for a license to fit"},{"line_number":84,"context_line":"    # this allows us to handle empty files, as well as not fail on the Okay"},{"line_number":85,"context_line":"    # doctests."},{"line_number":86,"context_line":"    if line_number is 1 and len(lines) \u003e 10 and _project_is_apache():"},{"line_number":87,"context_line":"        for idx, line in enumerate(lines):"},{"line_number":88,"context_line":"            column \u003d line.find(\u0027Licensed under the Apache License\u0027)"},{"line_number":89,"context_line":"            if (0 \u003c column \u003c 10 and not"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_4c2a4a7e","line":86,"range":{"start_line":86,"start_character":24,"end_line":86,"end_character":43},"updated":"2018-10-12 14:14:58.000000000","message":"Probably make this \u003e 1 so we still skip empty files.\n\nOh, except I think there are multi-line doctests too. It might have to be a little larger than 1.","commit_id":"85cdbdf408c57650e43d3e36f0786aa4b772bf26"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"533a9bb594503d006634af62a1be3af4ae6c2370","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    # skip files that are \u003c 10 lines, which isn\u0027t enough for a license to fit"},{"line_number":84,"context_line":"    # this allows us to handle empty files, as well as not fail on the Okay"},{"line_number":85,"context_line":"    # doctests."},{"line_number":86,"context_line":"    if line_number is 1 and len(lines) \u003e 10 and _project_is_apache():"},{"line_number":87,"context_line":"        for idx, line in enumerate(lines):"},{"line_number":88,"context_line":"            column \u003d line.find(\u0027Licensed under the Apache License\u0027)"},{"line_number":89,"context_line":"            if (0 \u003c column \u003c 10 and not"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_5b989774","line":86,"range":{"start_line":86,"start_character":24,"end_line":86,"end_character":43},"in_reply_to":"3f79a3b5_4c2a4a7e","updated":"2018-10-14 16:46:12.000000000","message":"Yeah, I wasn\u0027t sure what to do here since allowing the 1 line license almost makes this moot beyond len \u003e 0","commit_id":"85cdbdf408c57650e43d3e36f0786aa4b772bf26"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"4393e2747a1046e3d807dedf3c08d42209e6343e","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    # skip files that are \u003c 10 lines, which isn\u0027t enough for a license to fit"},{"line_number":84,"context_line":"    # this allows us to handle empty files, as well as not fail on the Okay"},{"line_number":85,"context_line":"    # doctests."},{"line_number":86,"context_line":"    if line_number is 1 and len(lines) \u003e 10 and _project_is_apache():"},{"line_number":87,"context_line":"        for idx, line in enumerate(lines):"},{"line_number":88,"context_line":"            column \u003d line.find(\u0027Licensed under the Apache License\u0027)"},{"line_number":89,"context_line":"            if (0 \u003c column \u003c 10 and not"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_d35f9c72","line":86,"range":{"start_line":86,"start_character":24,"end_line":86,"end_character":43},"in_reply_to":"3f79a3b5_5b989774","updated":"2018-10-15 17:42:01.000000000","message":"Technically there should always be at least two lines since we don\u0027t put license headers in content-free files. I don\u0027t know if that helps with the doctests though.","commit_id":"85cdbdf408c57650e43d3e36f0786aa4b772bf26"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"190ff4a11169ff3c84d784b85235df59100b273e","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            column \u003d line.find(\u0027Licensed under the Apache License\u0027)"},{"line_number":89,"context_line":"            if (0 \u003c column \u003c 10 and not"},{"line_number":90,"context_line":"                    _check_for_exact_apache(idx, lines)):"},{"line_number":91,"context_line":"                if (line.find(\u0027SPDX-License-Identifier: Apache-2.0\u0027) \u003c\u003d 0):"},{"line_number":92,"context_line":"                    return (column, \"H103: Header does not match Apache 2.0 \""},{"line_number":93,"context_line":"                            \"License notice\")"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_cc63badc","line":91,"range":{"start_line":91,"start_character":69,"end_line":91,"end_character":73},"updated":"2018-10-12 14:14:58.000000000","message":"Should maybe be just \u003c 0 since -1 means not found, but since it would be commented I\u0027m not sure it\u0027s possible for it to appear in position 0 anyway.","commit_id":"85cdbdf408c57650e43d3e36f0786aa4b772bf26"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"533a9bb594503d006634af62a1be3af4ae6c2370","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            column \u003d line.find(\u0027Licensed under the Apache License\u0027)"},{"line_number":89,"context_line":"            if (0 \u003c column \u003c 10 and not"},{"line_number":90,"context_line":"                    _check_for_exact_apache(idx, lines)):"},{"line_number":91,"context_line":"                if (line.find(\u0027SPDX-License-Identifier: Apache-2.0\u0027) \u003c\u003d 0):"},{"line_number":92,"context_line":"                    return (column, \"H103: Header does not match Apache 2.0 \""},{"line_number":93,"context_line":"                            \"License notice\")"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_9be4ef0f","line":91,"range":{"start_line":91,"start_character":69,"end_line":91,"end_character":73},"in_reply_to":"3f79a3b5_cc63badc","updated":"2018-10-14 16:46:12.000000000","message":"\u003c 0 makes it read clearer","commit_id":"85cdbdf408c57650e43d3e36f0786aa4b772bf26"}]}
