def get_latest_versions()

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())]