From d5fc5c55c5c9090a9fe1feb8122f266cca40900a Mon Sep 17 00:00:00 2001 From: macayu17 Date: Fri, 12 Jun 2026 01:30:26 +0530 Subject: [PATCH] Address code review: fix timeout, robust parsing, API fallbacks --- plugins/python-build/scripts/add_cpython.py | 23 ++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/plugins/python-build/scripts/add_cpython.py b/plugins/python-build/scripts/add_cpython.py index 51380e82..a425104b 100755 --- a/plugins/python-build/scripts/add_cpython.py +++ b/plugins/python-build/scripts/add_cpython.py @@ -233,10 +233,14 @@ def main(): try: ls_remote = subprocess.check_output( ["git", "-C", OUT_DIR, "ls-remote", "origin", "refs/heads/auto_add_version/*"], - text=True + text=True, + timeout=30 ) for line in ls_remote.splitlines(): - branch = line.split("\t")[1].replace("refs/heads/auto_add_version/", "") + parts = line.split("\t", 1) + if len(parts) < 2: + continue + branch = parts[1].replace("refs/heads/auto_add_version/", "") for v_str in branch.split("_"): try: pending_versions.add(packaging.version.Version(v_str)) @@ -484,12 +488,21 @@ class OpenSSLVersionsDirectory(KeyedList[_OpenSSLVersionInfo, packaging.version. #already retrieved return self[max(self.keys())] - j = requests.get("https://api.github.com/repos/openssl/openssl/releases", timeout=30).json() + response = requests.get("https://api.github.com/repos/openssl/openssl/releases", timeout=30) + response.raise_for_status() + j = response.json() + if not isinstance(j, list): + raise ValueError(f"Unexpected GitHub API response: {j}") + releases = [r for r in j if not r.get('prerelease')] + if not releases: + raise ValueError("No non-prerelease OpenSSL versions found") + if prefix: releases_prefix = [r for r in releases if r.get('tag_name', '').startswith(f"openssl-{prefix}")] - if releases_prefix: - releases = releases_prefix + if not releases_prefix: + raise ValueError(f"No OpenSSL release found matching prefix {prefix}") + releases = releases_prefix j_release = releases[0]