From 67f88d6d5e5314d0b0a74b1c4304497e7aa480f0 Mon Sep 17 00:00:00 2001 From: Tim Felgentreff Date: Mon, 4 May 2026 15:49:22 +0200 Subject: [PATCH 1/2] Support new graalpy asset names that include Python version --- bin/update_pythons.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/bin/update_pythons.py b/bin/update_pythons.py index 61ccdd80e..0f471e9c9 100755 --- a/bin/update_pythons.py +++ b/bin/update_pythons.py @@ -124,14 +124,20 @@ def __init__(self) -> None: response.raise_for_status() releases = response.json() - gp_version_re = re.compile(r"-(\d+\.\d+\.\d+)$") + gp_asset_re = re.compile(r"^(graalpy(\d+\.\d+)?-(\d+\.\d+\.\d+))-") cp_version_re = re.compile(r"Python (\d+\.\d+(?:\.\d+)?)") for release in releases: - m = gp_version_re.search(release["tag_name"]) - if m: - release["graalpy_version"] = Version(m.group(1)) - m = cp_version_re.search(release["body"]) - if m: + for asset in release["assets"]: + m = gp_asset_re.match(asset["name"]) + if m: + release["asset_prefix"] = m.group(1) + release["graalpy_version"] = Version(m.group(3)) + if m.group(2): + release["python_version"] = Version(m.group(2)) + break + if "python_version" not in release and ( + m := cp_version_re.search(release["body"] or "") + ): release["python_version"] = Version(m.group(1)) self.releases = [r for r in releases if "graalpy_version" in r and "python_version" in r] @@ -172,12 +178,11 @@ def update_version(self, identifier: str, spec: Specifier) -> ConfigUrl | None: ext = "zip" if "win" in identifier else "tar.gz" for release in reversed(releases): version = release["python_version"] - gpversion = release["graalpy_version"] urls = [ rf["browser_download_url"] for rf in release["assets"] if rf["name"].endswith(f"{platform}-{arch}.{ext}") - and rf["name"].startswith(f"graalpy-{gpversion.major}") + and rf["name"].startswith(release["asset_prefix"]) ] if not urls: continue From de11dbcb5f91b873738f1fd72e52b8dc6aa74470 Mon Sep 17 00:00:00 2001 From: Tim Felgentreff Date: Thu, 11 Jun 2026 10:15:28 +0200 Subject: [PATCH 2/2] Slight readability improvement for graalpy asset regex --- bin/update_pythons.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/bin/update_pythons.py b/bin/update_pythons.py index 0f471e9c9..dd6bb38cc 100755 --- a/bin/update_pythons.py +++ b/bin/update_pythons.py @@ -124,16 +124,18 @@ def __init__(self) -> None: response.raise_for_status() releases = response.json() - gp_asset_re = re.compile(r"^(graalpy(\d+\.\d+)?-(\d+\.\d+\.\d+))-") + gp_asset_re = re.compile( + r"^(?Pgraalpy(?P\d+\.\d+)?-(?P\d+\.\d+\.\d+))-" + ) cp_version_re = re.compile(r"Python (\d+\.\d+(?:\.\d+)?)") for release in releases: for asset in release["assets"]: m = gp_asset_re.match(asset["name"]) if m: - release["asset_prefix"] = m.group(1) - release["graalpy_version"] = Version(m.group(3)) - if m.group(2): - release["python_version"] = Version(m.group(2)) + release["asset_prefix"] = m.group("prefix") + release["graalpy_version"] = Version(m.group("graalpy")) + if m.group("cpython"): + release["python_version"] = Version(m.group("cpython")) break if "python_version" not in release and ( m := cp_version_re.search(release["body"] or "")