)]}'
{"openstack_releases/cmds/validate.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"d45d125c2a5b5779e93bec9219103fe7a02f97d4","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                            (deliverable_info[\u0027team\u0027], filename))"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        # Look for the release-type"},{"line_number":133,"context_line":"        release_type \u003d deliverable_info.get(\u0027release-type\u0027, \u0027std\u0027)"},{"line_number":134,"context_line":"        if not versionutils.is_valid_release_type(release_type):"},{"line_number":135,"context_line":"            errors.append(\u0027release_type: %s not defined\u0027 % (release_type))"},{"line_number":136,"context_line":"            continue"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_5ff291d3","line":133,"updated":"2016-06-20 17:52:56.000000000","message":"This new deliverable file parameter and its valid values need to be documented in the README.","commit_id":"a25df0faf132bfebc64d877f858b43480ab37f74"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"d45d125c2a5b5779e93bec9219103fe7a02f97d4","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        # Look for the release-type"},{"line_number":133,"context_line":"        release_type \u003d deliverable_info.get(\u0027release-type\u0027, \u0027std\u0027)"},{"line_number":134,"context_line":"        if not versionutils.is_valid_release_type(release_type):"},{"line_number":135,"context_line":"            errors.append(\u0027release_type: %s not defined\u0027 % (release_type))"},{"line_number":136,"context_line":"            continue"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_7f094d95","line":134,"updated":"2016-06-20 17:52:56.000000000","message":"This asks versionutils to do the validation, but the higher level code owns the error. How about putting this whole if statement down in a versionutils function?","commit_id":"a25df0faf132bfebc64d877f858b43480ab37f74"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"d45d125c2a5b5779e93bec9219103fe7a02f97d4","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        release_type \u003d deliverable_info.get(\u0027release-type\u0027, \u0027std\u0027)"},{"line_number":134,"context_line":"        if not versionutils.is_valid_release_type(release_type):"},{"line_number":135,"context_line":"            errors.append(\u0027release_type: %s not defined\u0027 % (release_type))"},{"line_number":136,"context_line":"            continue"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        # Look for an email address to receive release announcements"},{"line_number":139,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_5f21f1fa","line":136,"updated":"2016-06-20 17:52:56.000000000","message":"This this continue in place, will the logic in validate_version() to switch to \u0027std\u0027 for invalid version schemes ever be used?","commit_id":"a25df0faf132bfebc64d877f858b43480ab37f74"}],"openstack_releases/versionutils.py":[{"author":{"_account_id":7069,"name":"Joshua Hesketh","email":"josh@nitrotech.org","username":"jhesketh"},"change_message_id":"b2c46d81420bd76016deefecbd603c8fa4ea698b","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    constructor, exception, canonicalise \u003d _validators[release_type]"},{"line_number":32,"context_line":"    try:"},{"line_number":33,"context_line":"        semver \u003d constructor(versionstr)"},{"line_number":34,"context_line":"    except exception as err:"},{"line_number":35,"context_line":"        yield \u0027Invalid version: %s\u0027 % err"},{"line_number":36,"context_line":"    else:"},{"line_number":37,"context_line":"        # Make sure we didn\u0027t change the version to meet the canonical form."}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_9ee67be6","line":34,"range":{"start_line":34,"start_character":11,"end_line":34,"end_character":20},"updated":"2016-06-17 01:46:50.000000000","message":"Probably mean \"Exception\"","commit_id":"a8542f67658e70fcf3e8a7e02efa73fdb3a95b7f"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"c3c91439c149f631a22717436abd49be15fb581a","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    constructor, exception, canonicalise \u003d _validators[release_type]"},{"line_number":32,"context_line":"    try:"},{"line_number":33,"context_line":"        semver \u003d constructor(versionstr)"},{"line_number":34,"context_line":"    except exception as err:"},{"line_number":35,"context_line":"        yield \u0027Invalid version: %s\u0027 % err"},{"line_number":36,"context_line":"    else:"},{"line_number":37,"context_line":"        # Make sure we didn\u0027t change the version to meet the canonical form."}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_de53e36a","line":34,"range":{"start_line":34,"start_character":11,"end_line":34,"end_character":20},"in_reply_to":"7aa08908_9ee67be6","updated":"2016-06-17 01:55:43.000000000","message":"Nope \u0027exception\u0027 is a loal variable and comes from the _validators. (marked with \u0027here\u0027)","commit_id":"a8542f67658e70fcf3e8a7e02efa73fdb3a95b7f"},{"author":{"_account_id":7069,"name":"Joshua Hesketh","email":"josh@nitrotech.org","username":"jhesketh"},"change_message_id":"04b332a3da3a2c483a4d0e4118c73b019929698b","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    constructor, exception, canonicalise \u003d _validators[release_type]"},{"line_number":32,"context_line":"    try:"},{"line_number":33,"context_line":"        semver \u003d constructor(versionstr)"},{"line_number":34,"context_line":"    except exception as err:"},{"line_number":35,"context_line":"        yield \u0027Invalid version: %s\u0027 % err"},{"line_number":36,"context_line":"    else:"},{"line_number":37,"context_line":"        # Make sure we didn\u0027t change the version to meet the canonical form."}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_5e625317","line":34,"range":{"start_line":34,"start_character":11,"end_line":34,"end_character":20},"in_reply_to":"7aa08908_de53e36a","updated":"2016-06-17 01:57:30.000000000","message":"ah, thought I might have missed something. Sorry!","commit_id":"a8542f67658e70fcf3e8a7e02efa73fdb3a95b7f"},{"author":{"_account_id":7069,"name":"Joshua Hesketh","email":"josh@nitrotech.org","username":"jhesketh"},"change_message_id":"b2c46d81420bd76016deefecbd603c8fa4ea698b","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    return release_type in _validators"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"_validators \u003d {\u0027std\u0027: (pbr.version.SemanticVersion.from_pip_string,"},{"line_number":49,"context_line":"                       ValueError,"},{"line_number":50,"context_line":"                       lambda x: x.release_string()),"},{"line_number":51,"context_line":"               \u0027xstatic\u0027: (packaging.version.Version,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_1ec44b3e","line":48,"range":{"start_line":48,"start_character":0,"end_line":48,"end_character":11},"updated":"2016-06-17 01:46:50.000000000","message":"usually globals like this would go up the top in caps.","commit_id":"a8542f67658e70fcf3e8a7e02efa73fdb3a95b7f"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"c3c91439c149f631a22717436abd49be15fb581a","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    return release_type in _validators"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"_validators \u003d {\u0027std\u0027: (pbr.version.SemanticVersion.from_pip_string,"},{"line_number":49,"context_line":"                       ValueError,"},{"line_number":50,"context_line":"                       lambda x: x.release_string()),"},{"line_number":51,"context_line":"               \u0027xstatic\u0027: (packaging.version.Version,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_1e93abfb","line":48,"range":{"start_line":48,"start_character":0,"end_line":48,"end_character":11},"in_reply_to":"7aa08908_1ec44b3e","updated":"2016-06-17 01:55:43.000000000","message":"Yeah it originally contained references to function so it needed to be at the bottom.\n\nI\u0027ll fix it in the next version.","commit_id":"a8542f67658e70fcf3e8a7e02efa73fdb3a95b7f"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"c3c91439c149f631a22717436abd49be15fb581a","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"_validators \u003d {\u0027std\u0027: (pbr.version.SemanticVersion.from_pip_string,"},{"line_number":49,"context_line":"                       ValueError,"},{"line_number":50,"context_line":"                       lambda x: x.release_string()),"},{"line_number":51,"context_line":"               \u0027xstatic\u0027: (packaging.version.Version,"},{"line_number":52,"context_line":"                           packaging.version.InvalidVersion,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_fe485fb5","line":49,"updated":"2016-06-17 01:55:43.000000000","message":"here","commit_id":"a8542f67658e70fcf3e8a7e02efa73fdb3a95b7f"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"c3c91439c149f631a22717436abd49be15fb581a","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                       ValueError,"},{"line_number":50,"context_line":"                       lambda x: x.release_string()),"},{"line_number":51,"context_line":"               \u0027xstatic\u0027: (packaging.version.Version,"},{"line_number":52,"context_line":"                           packaging.version.InvalidVersion,"},{"line_number":53,"context_line":"                           lambda x: str(x)),"},{"line_number":54,"context_line":"               }"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_5ec6d316","line":52,"updated":"2016-06-17 01:55:43.000000000","message":"and here","commit_id":"a8542f67658e70fcf3e8a7e02efa73fdb3a95b7f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"d45d125c2a5b5779e93bec9219103fe7a02f97d4","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import packaging.version"},{"line_number":18,"context_line":"import pbr.version"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"_VALIDATORS \u003d {\u0027std\u0027: (pbr.version.SemanticVersion.from_pip_string,"},{"line_number":22,"context_line":"                       ValueError,"},{"line_number":23,"context_line":"                       lambda x: x.release_string()),"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_dfe8417f","line":20,"updated":"2016-06-20 17:52:56.000000000","message":"This data structure could use a comment describing how to add a new value.","commit_id":"a25df0faf132bfebc64d877f858b43480ab37f74"}]}
