)]}'
{"reviewstats/utils.py":[{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"6678ea11cd60691aeeb3cafceba53a6cef5269cb","unresolved":false,"context_lines":[{"line_number":35,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"PROJECTS_YAML \u003d (\u0027http://git.openstack.org/cgit/openstack/governance/plain/\u0027"},{"line_number":39,"context_line":"                 \u0027reference/projects.yaml\u0027)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ffb9cba7_eacffc54","line":38,"updated":"2019-04-21 23:47:41.000000000","message":"I know the API is a little different but can we just use openstack_governance here? to grab the project data object form.","commit_id":"2fadb40ffc856e9ec43c5a971ad8975e7023f2b8"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"679e8efb0394319f5399d3a4e945ad5a05523a37","unresolved":false,"context_lines":[{"line_number":35,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"PROJECTS_YAML \u003d (\u0027http://git.openstack.org/cgit/openstack/governance/plain/\u0027"},{"line_number":39,"context_line":"                 \u0027reference/projects.yaml\u0027)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ffb9cba7_7ef08491","line":38,"in_reply_to":"ffb9cba7_eacffc54","updated":"2019-04-23 20:50:17.000000000","message":"Probably. I don\u0027t think the library existed yet when I originally wrote this code. I\u0027ll look into it.","commit_id":"2fadb40ffc856e9ec43c5a971ad8975e7023f2b8"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"6678ea11cd60691aeeb3cafceba53a6cef5269cb","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"# Copied from https://github.com/cybertron/zuul-status/blob/master/app.py"},{"line_number":47,"context_line":"def get_remote_data(address, datatype\u003d\u0027json\u0027):"},{"line_number":48,"context_line":"    req \u003d urllib.request.Request(address)"},{"line_number":49,"context_line":"    req.add_header(\u0027Accept-encoding\u0027, \u0027gzip\u0027)"},{"line_number":50,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ffb9cba7_0acdb05c","line":47,"updated":"2019-04-21 23:47:41.000000000","message":"We\u0027ll probably still need a version of this to grab the group information","commit_id":"2fadb40ffc856e9ec43c5a971ad8975e7023f2b8"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"6678ea11cd60691aeeb3cafceba53a6cef5269cb","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                for d, d_data in data[\u0027deliverables\u0027].items():"},{"line_number":126,"context_line":"                    projects[-1][\u0027subprojects\u0027] +\u003d d_data[\u0027repos\u0027]"},{"line_number":127,"context_line":"        projects[-1][\u0027subprojects\u0027] \u003d sorted("},{"line_number":128,"context_line":"            list(set(projects[-1][\u0027subprojects\u0027]))"},{"line_number":129,"context_line":"            )"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    return projects"}],"source_content_type":"text/x-python","patch_set":5,"id":"ffb9cba7_2aff5468","line":128,"updated":"2019-04-21 23:47:41.000000000","message":"The unit tests are calling this with an empty dict() so we need to be defensive here, or expressive there.","commit_id":"2fadb40ffc856e9ec43c5a971ad8975e7023f2b8"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"679e8efb0394319f5399d3a4e945ad5a05523a37","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                for d, d_data in data[\u0027deliverables\u0027].items():"},{"line_number":126,"context_line":"                    projects[-1][\u0027subprojects\u0027] +\u003d d_data[\u0027repos\u0027]"},{"line_number":127,"context_line":"        projects[-1][\u0027subprojects\u0027] \u003d sorted("},{"line_number":128,"context_line":"            list(set(projects[-1][\u0027subprojects\u0027]))"},{"line_number":129,"context_line":"            )"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    return projects"}],"source_content_type":"text/x-python","patch_set":5,"id":"ffb9cba7_be24bc0e","line":128,"in_reply_to":"ffb9cba7_2aff5468","updated":"2019-04-23 20:50:17.000000000","message":"Yeah, they really shouldn\u0027t be though. I think there\u0027s a problem with the ci job setup because it doesn\u0027t happen in my local environment.\n\nThe fact that we\u0027re calling this with no projects is a bug IMHO. The failing job is the one that tests all_projects\u003dTrue, which should be running against all of the existing project json files. The fact that it\u0027s not means something is broken.","commit_id":"2fadb40ffc856e9ec43c5a971ad8975e7023f2b8"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"a52b5a0dc47888c4d884eb6d140aa9a87d4ca2f3","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        # Get base project name"},{"line_number":83,"context_line":"        project_name \u003d os.path.splitext(os.path.basename(fn))[0]"},{"line_number":84,"context_line":"        gov_data \u003d governance.Governance.from_remote_repo()"},{"line_number":85,"context_line":"        for repo in gov_data.get_repositories(project_name):"},{"line_number":86,"context_line":"            projects[-1][\u0027subprojects\u0027] +\u003d [repo.name]"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    return projects"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fb8cfa7_c1c2f385","line":85,"updated":"2019-06-04 22:26:46.000000000","message":"This is breaking if there is no team in governance that matches project_name. Testing a fix now.","commit_id":"930efd9c47fbd040a338d8dde091d51e953f5345"}]}
