in utilities/check_experimenter_and_start_jobs.py [0:0]
def get_latest_versions(versions, min_version):
# Parse versions and group by major.minor
version_list = []
from packaging.version import Version
for version in versions.keys():
if Version(version) >= Version(min_version[0]):
version_list.append(version)
version_groups = defaultdict(list)
for version_str in version_list:
version = parse(version_str)
major_minor = f"{version.major}.{version.minor}"
version_groups[major_minor].append(version)
# Determine the latest version in each group
latest_versions = {}
for major_minor, versions in version_groups.items():
latest_versions[major_minor] = max(versions, key=lambda v: (v.major, v.minor, v.micro))
# Return the latest versions sorted by major.minor
return [f"{version}" for version in sorted(latest_versions.values())]