)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"39fe2342aca082d14ac9475a6fec42a061c13009","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"323efea0_572c436b","updated":"2023-02-22 03:36:37.000000000","message":"There is more work to be done on this.  It isn\u0027t as simple as 2023.2 being interpretted as a float() or str().\n\nWe should keep release (and possibly rename it to release_name) as is and grab a release_if or release_ver out of the release tools.  We can then use either the release_name (bobcat) or release_id (2023.2) as needed.\n\nWe can even make a symlink in thr candidates/ directory so candidates/{bobcat,2023.2}/PROJECT are the same dir.","commit_id":"9480f2db21d5b86969eba3dfcbc68813b2948a9a"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"8b2b9de02fd2533134803ac644bb69f849947279","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"81e24b52_f594a934","updated":"2023-02-02 01:21:20.000000000","message":"need more work","commit_id":"9480f2db21d5b86969eba3dfcbc68813b2948a9a"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"bd8fc8a4d7a5448548fa4a17ead90903fbe30669","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"43eba9d6_c0eb80b7","in_reply_to":"323efea0_572c436b","updated":"2023-02-25 02:33:19.000000000","message":"done","commit_id":"9480f2db21d5b86969eba3dfcbc68813b2948a9a"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"97f2e457bbd33323ea262b38cc612b30a93365a8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"aae02f05_4a3ee1ea","updated":"2023-02-27 02:36:48.000000000","message":"Over all this looks good.  A couple of fixes needed and we\u0027re good to go,\n\nThannks.","commit_id":"f3ef0a78524d62431e9d9f78933359cba9fd8cc0"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e86dc5607334a84e161fd9c5311f2429b541a718","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7e3297f8_c414d59d","updated":"2023-02-25 03:39:22.000000000","message":"this is working fine, tested in https://review.opendev.org/q/topic:migrate-release-version\n\nand other template/scripts locally.","commit_id":"f3ef0a78524d62431e9d9f78933359cba9fd8cc0"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"be962dfecbfa850b67e6bc8d8e5abe4cdf6ab275","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"f6d8cd39_9619bc4f","updated":"2023-03-03 07:05:45.000000000","message":"Thanks.  There are still issues with str() vs float(), and setup-election-config will not find the correct cross-project tag","commit_id":"0e67a7895ec535e038b1be5de9cc69a76ae14a45"}],"openstack_election/cmds/ci_check_all_candidate_files.py":[{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"97f2e457bbd33323ea262b38cc612b30a93365a8","unresolved":true,"context_lines":[{"line_number":22,"context_line":"    print(\u0027Validate Release\u0027)"},{"line_number":23,"context_line":"    print(\u0027----------------\u0027)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    release_path \u003d os.path.join(utils.CANDIDATE_PATH, str(release))"},{"line_number":26,"context_line":"    is_valid \u003d (os.path.exists(release_path) and os.path.isdir(release_path))"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    print(\u0027Release: %s [%s] %s\u0027 % (release, release_path,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ca93e179_e9c0c26f","line":25,"updated":"2023-02-27 02:36:48.000000000","message":"I\u0027ll say it here, but I think it applies to all the places you\u0027re adding a str(release).  I think it\u0027d be most robust if rather than doing the type conversion at the in the called functions we do it once in config.py::load_config()[1] by adding something like:\n\nconf[\u0027release\u0027] \u003d str(conf[\u0027release\u0027])\n\n[1] https://opendev.org/openstack/election/src/commit/80f2ccfd426bf4bbd1a90c9e4758fbbb7dbeaef3/openstack_election/config.py#L30","commit_id":"f3ef0a78524d62431e9d9f78933359cba9fd8cc0"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"12ad9cf8f7cc30815786073bcb872200e5557426","unresolved":true,"context_lines":[{"line_number":22,"context_line":"    print(\u0027Validate Release\u0027)"},{"line_number":23,"context_line":"    print(\u0027----------------\u0027)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    release_path \u003d os.path.join(utils.CANDIDATE_PATH, str(release))"},{"line_number":26,"context_line":"    is_valid \u003d (os.path.exists(release_path) and os.path.isdir(release_path))"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    print(\u0027Release: %s [%s] %s\u0027 % (release, release_path,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f4539a7_98ca25c5","line":25,"in_reply_to":"ca93e179_e9c0c26f","updated":"2023-03-03 04:58:58.000000000","message":"good idea. done","commit_id":"f3ef0a78524d62431e9d9f78933359cba9fd8cc0"}],"openstack_election/cmds/setup_election_config.py":[{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"97f2e457bbd33323ea262b38cc612b30a93365a8","unresolved":true,"context_lines":[{"line_number":177,"context_line":"    # The Queens development cycle begins when we branch Pike-RC1, so collect"},{"line_number":178,"context_line":"    # that date from the releases data."},{"line_number":179,"context_line":"    schedule \u003d utils.get_schedule_data(names[idx+3])"},{"line_number":180,"context_line":"    event \u003d \u0027%s-rc1\u0027 % (release_data[idx+3][0:1])"},{"line_number":181,"context_line":"    for week in schedule.get(\u0027cycle\u0027, []):"},{"line_number":182,"context_line":"        if event in week.get(\u0027x-project\u0027, []):"},{"line_number":183,"context_line":"            timeframe_start \u003d valid_date(week[\u0027end\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"0ab90a7c_00538da1","line":180,"range":{"start_line":180,"start_character":24,"end_line":180,"end_character":36},"updated":"2023-02-27 02:36:48.000000000","message":"This should be names, not release data as it ties into the release tooling.","commit_id":"f3ef0a78524d62431e9d9f78933359cba9fd8cc0"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"64c6e3fb8e65f7365c2bec6e7c9cadc2c117888b","unresolved":true,"context_lines":[{"line_number":177,"context_line":"    # The Queens development cycle begins when we branch Pike-RC1, so collect"},{"line_number":178,"context_line":"    # that date from the releases data."},{"line_number":179,"context_line":"    schedule \u003d utils.get_schedule_data(names[idx+3])"},{"line_number":180,"context_line":"    event \u003d \u0027%s-rc1\u0027 % (release_data[idx+3][0:1])"},{"line_number":181,"context_line":"    for week in schedule.get(\u0027cycle\u0027, []):"},{"line_number":182,"context_line":"        if event in week.get(\u0027x-project\u0027, []):"},{"line_number":183,"context_line":"            timeframe_start \u003d valid_date(week[\u0027end\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"a16ff7dd_0e3cf24c","line":180,"range":{"start_line":180,"start_character":24,"end_line":180,"end_character":36},"in_reply_to":"0ab90a7c_00538da1","updated":"2023-03-03 05:00:07.000000000","message":"we have names in release_data for releases till zed","commit_id":"f3ef0a78524d62431e9d9f78933359cba9fd8cc0"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d265e5c8315d06f55ee72369d46f0eff8ee6fb8a","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    # The Queens development cycle begins when we branch Pike-RC1, so collect"},{"line_number":178,"context_line":"    # that date from the releases data."},{"line_number":179,"context_line":"    schedule \u003d utils.get_schedule_data(names[idx+3])"},{"line_number":180,"context_line":"    event \u003d \u0027%s-rc1\u0027 % (release_data[idx+3][0:1])"},{"line_number":181,"context_line":"    for week in schedule.get(\u0027cycle\u0027, []):"},{"line_number":182,"context_line":"        if event in week.get(\u0027x-project\u0027, []):"},{"line_number":183,"context_line":"            timeframe_start \u003d valid_date(week[\u0027end\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"4b851676_c45af63f","line":180,"range":{"start_line":180,"start_character":24,"end_line":180,"end_character":36},"in_reply_to":"626ed952_9410e882","updated":"2023-03-03 18:49:22.000000000","message":"ah I see your point. I thought in release schedule it is with relaese version but it is still with name first letter\n\n - https://github.com/openstack/releases/blob/a9639190152ae1154f6e91548de300d6f42555ea/doc/source/bobcat/schedule.yaml#L107\n \n done","commit_id":"f3ef0a78524d62431e9d9f78933359cba9fd8cc0"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"be962dfecbfa850b67e6bc8d8e5abe4cdf6ab275","unresolved":true,"context_lines":[{"line_number":177,"context_line":"    # The Queens development cycle begins when we branch Pike-RC1, so collect"},{"line_number":178,"context_line":"    # that date from the releases data."},{"line_number":179,"context_line":"    schedule \u003d utils.get_schedule_data(names[idx+3])"},{"line_number":180,"context_line":"    event \u003d \u0027%s-rc1\u0027 % (release_data[idx+3][0:1])"},{"line_number":181,"context_line":"    for week in schedule.get(\u0027cycle\u0027, []):"},{"line_number":182,"context_line":"        if event in week.get(\u0027x-project\u0027, []):"},{"line_number":183,"context_line":"            timeframe_start \u003d valid_date(week[\u0027end\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"626ed952_9410e882","line":180,"range":{"start_line":180,"start_character":24,"end_line":180,"end_character":36},"in_reply_to":"a16ff7dd_0e3cf24c","updated":"2023-03-03 07:05:45.000000000","message":"This should be names, not release data as it ties into the release tooling.\n\nConsider the future, series data will look something like:\n\n - name: dingo\n   release-id: 2024.2\n   ...\n - name: civet\n   release-id: 2024.1\n   ...\n - name: bobcat\n   release-id: 2023.2\n   ...\n - name: antelope\n   release-id: 2023.1\n   ...\n - name: zed\n   ....  \n\n\nwhich that in mind release_data will look something like:\n args.release \u003d \"2024.2\"\n release_data \u003d [ \"2024.2\", \"2024.1\", \"2023.2\", \"2023.1\", \"zed\", ...]\n names \u003d [ \"dingo\", \"civet\", \"bobcat\", \"antelope\", \"zed\", ...]\n idx \u003d 0\n event \u003d \u0027%s-rc1\u0027 % (release_data[idx+3][0:1]) # \"2-rc1\"\n \nThis is wrong for a couple of reasons, 1) the release-tooling will have the tag as \"a-rc1\"; and 2) \"2-rc1\" is not longer unique as basically all releases going forward will have a first character od \"2\" (assuming we stick with dataver).","commit_id":"f3ef0a78524d62431e9d9f78933359cba9fd8cc0"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"be962dfecbfa850b67e6bc8d8e5abe4cdf6ab275","unresolved":true,"context_lines":[{"line_number":45,"context_line":"    return dumper.represent_dict(data.items())"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"def valid_version(value):"},{"line_number":49,"context_line":"    try:"},{"line_number":50,"context_line":"        value \u003d float(value)"},{"line_number":51,"context_line":"    except ValueError:"},{"line_number":52,"context_line":"        msg \u003d (\"{} is not an valid release version. Pass release version, for\""},{"line_number":53,"context_line":"               \" example 2023.1\".format(value))"},{"line_number":54,"context_line":"        raise Exception(msg)"},{"line_number":55,"context_line":"    return value"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"def valid_date(opt):"}],"source_content_type":"text/x-python","patch_set":6,"id":"a97324cf_9c684f1c","line":55,"range":{"start_line":48,"start_character":0,"end_line":55,"end_character":16},"updated":"2023-03-03 07:05:45.000000000","message":"Given that we treat release as a str() everywhere we don\u0027t actaually want to return the float(value), we still want to preserve the str()\u0027ness of value.","commit_id":"0e67a7895ec535e038b1be5de9cc69a76ae14a45"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"01665aa0dd1c0aedb63e80e10af6a2a71dd1b4ef","unresolved":true,"context_lines":[{"line_number":45,"context_line":"    return dumper.represent_dict(data.items())"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"def valid_version(value):"},{"line_number":49,"context_line":"    try:"},{"line_number":50,"context_line":"        value \u003d float(value)"},{"line_number":51,"context_line":"    except ValueError:"},{"line_number":52,"context_line":"        msg \u003d (\"{} is not an valid release version. Pass release version, for\""},{"line_number":53,"context_line":"               \" example 2023.1\".format(value))"},{"line_number":54,"context_line":"        raise Exception(msg)"},{"line_number":55,"context_line":"    return value"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"def valid_date(opt):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9d3edd7a_f999354f","line":55,"range":{"start_line":48,"start_character":0,"end_line":55,"end_character":16},"in_reply_to":"5275dd70_86233e03","updated":"2023-03-04 07:12:27.000000000","message":"Okay.  I see what you\u0027re trying to achieve.  I\u0027m not sure I see the value.  regardless this isn\u0027t a reason to hold this up.","commit_id":"0e67a7895ec535e038b1be5de9cc69a76ae14a45"},{"author":{"_account_id":14482,"name":"Ian Y. Choi","email":"ianyrchoi@gmail.com","username":"ianychoi"},"change_message_id":"08086398be637c0eb999391852c3f029ce9060c6","unresolved":true,"context_lines":[{"line_number":45,"context_line":"    return dumper.represent_dict(data.items())"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"def valid_version(value):"},{"line_number":49,"context_line":"    try:"},{"line_number":50,"context_line":"        value \u003d float(value)"},{"line_number":51,"context_line":"    except ValueError:"},{"line_number":52,"context_line":"        msg \u003d (\"{} is not an valid release version. Pass release version, for\""},{"line_number":53,"context_line":"               \" example 2023.1\".format(value))"},{"line_number":54,"context_line":"        raise Exception(msg)"},{"line_number":55,"context_line":"    return value"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"def valid_date(opt):"}],"source_content_type":"text/x-python","patch_set":6,"id":"058d5bd0_280f8ac0","line":55,"range":{"start_line":48,"start_character":0,"end_line":55,"end_character":16},"in_reply_to":"9d3edd7a_f999354f","updated":"2023-03-24 18:52:39.000000000","message":"I also got the intent. Using semver to check whether OpenStack release version syntax would be right or not might be better approach, but I agree with Tony: it would not be a blocker to hold it at the moment.","commit_id":"0e67a7895ec535e038b1be5de9cc69a76ae14a45"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d265e5c8315d06f55ee72369d46f0eff8ee6fb8a","unresolved":true,"context_lines":[{"line_number":45,"context_line":"    return dumper.represent_dict(data.items())"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"def valid_version(value):"},{"line_number":49,"context_line":"    try:"},{"line_number":50,"context_line":"        value \u003d float(value)"},{"line_number":51,"context_line":"    except ValueError:"},{"line_number":52,"context_line":"        msg \u003d (\"{} is not an valid release version. Pass release version, for\""},{"line_number":53,"context_line":"               \" example 2023.1\".format(value))"},{"line_number":54,"context_line":"        raise Exception(msg)"},{"line_number":55,"context_line":"    return value"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"def valid_date(opt):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5275dd70_86233e03","line":55,"range":{"start_line":48,"start_character":0,"end_line":55,"end_character":16},"in_reply_to":"a97324cf_9c684f1c","updated":"2023-03-03 18:49:22.000000000","message":"Actually I want to keep it float (say 2023.2) in configuration file not as string (say \"2023.2\") that is why I am converting/keeping it float even it is passed as 2023.2 or \"2023.2\".\n\nAnd internally for checking candidate patch etc we can use it with string conversion.","commit_id":"0e67a7895ec535e038b1be5de9cc69a76ae14a45"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"be962dfecbfa850b67e6bc8d8e5abe4cdf6ab275","unresolved":true,"context_lines":[{"line_number":156,"context_line":"            release_data.append(x[\u0027name\u0027])"},{"line_number":157,"context_line":"    # Find where in the list the requested release sits.  This will typically"},{"line_number":158,"context_line":"    # be very early but don\u0027t assume that."},{"line_number":159,"context_line":"    idx \u003d (release_data.index(str(args.release)) if str(args.release)"},{"line_number":160,"context_line":"           in release_data else -1)"},{"line_number":161,"context_line":"    # If date is not passed to this script then autimatically"},{"line_number":162,"context_line":"    # select the release end date."}],"source_content_type":"text/x-python","patch_set":6,"id":"4b2b6738_0432344a","line":159,"range":{"start_line":159,"start_character":30,"end_line":159,"end_character":47},"updated":"2023-03-03 07:05:45.000000000","message":"if valid_version() returns a str() these casts are unneeded.","commit_id":"0e67a7895ec535e038b1be5de9cc69a76ae14a45"}],"openstack_election/utils.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"38484c012fe8668f1418973d75abc9f604c49575","unresolved":true,"context_lines":[{"line_number":372,"context_line":""},{"line_number":373,"context_line":"def get_ptl_results(election\u003dconf[\u0027release\u0027]):"},{"line_number":374,"context_line":"    try:"},{"line_number":375,"context_line":"        resultfd \u003d open(\u0027doc/source/results/%s/ptl.yaml\u0027 % str(election))"},{"line_number":376,"context_line":"    except FileNotFoundError:"},{"line_number":377,"context_line":"        return {\u0027candidates\u0027: {}}"},{"line_number":378,"context_line":"    return yaml.safe_load(resultfd)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3165398a_0c73896c","line":375,"updated":"2023-02-02 10:32:19.000000000","message":"Shouldn\u0027t need to have an explicit `str()` here as it\u0027s being formatted into a `%s`.","commit_id":"9480f2db21d5b86969eba3dfcbc68813b2948a9a"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"bd8fc8a4d7a5448548fa4a17ead90903fbe30669","unresolved":false,"context_lines":[{"line_number":372,"context_line":""},{"line_number":373,"context_line":"def get_ptl_results(election\u003dconf[\u0027release\u0027]):"},{"line_number":374,"context_line":"    try:"},{"line_number":375,"context_line":"        resultfd \u003d open(\u0027doc/source/results/%s/ptl.yaml\u0027 % str(election))"},{"line_number":376,"context_line":"    except FileNotFoundError:"},{"line_number":377,"context_line":"        return {\u0027candidates\u0027: {}}"},{"line_number":378,"context_line":"    return yaml.safe_load(resultfd)"}],"source_content_type":"text/x-python","patch_set":2,"id":"c851aa9b_b1d9e0cf","line":375,"in_reply_to":"3165398a_0c73896c","updated":"2023-02-25 02:33:19.000000000","message":"Done","commit_id":"9480f2db21d5b86969eba3dfcbc68813b2948a9a"}]}
