| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 
 | import ast
import requests
from packaging.requirements import Requirement
from packaging.version import Version
def fetch_dependencies_from_setup(file_path):
    with open(file_path, "r") as file:
        tree = ast.parse(file.read(), filename=file_path)
    dependencies = []
    for node in ast.walk(tree):
        if isinstance(node, ast.Call) and getattr(node.func, "id", None) == "setup":
            for keyword in node.keywords:
                if keyword.arg == "install_requires":
                    dependencies = [elt.s for elt in keyword.value.elts]
                    break
    return dependencies
def list_versions(package_name):
    url = f"https://pypi.org/pypi/{package_name}/json"
    response = requests.get(url)
    data = response.json()
    versions = data["releases"].keys()
    return sorted(versions, key=Version, reverse=True)
def is_major_update(previous, latest):
    return Version(latest).major > Version(previous).major
def check_for_major_updates():
    setup_file_path = "sdk/ml/azure-ai-ml/setup.py"
    deps_list = fetch_dependencies_from_setup(setup_file_path)
    deps = [Requirement(line) for line in deps_list if line.strip() and not line.strip().startswith("#")]
    with open("updates.txt", "w") as f:
        for dep in deps:
            all_versions = list_versions(dep.name)
            if len(all_versions) > 1 and is_major_update(all_versions[1], all_versions[0]):
                f.write(f"{dep.name} {all_versions[0]}\n")
check_for_major_updates()
 |