From 5676763932baa570fc0f3867d2b5b50d88fffb2c Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Sun, 1 Mar 2026 21:56:37 +0000 Subject: [PATCH] Work around CDN rate limiting on Python.org in bin/update_pythons.py --- bin/update_pythons.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/bin/update_pythons.py b/bin/update_pythons.py index c55ba6f51..f998a617e 100755 --- a/bin/update_pythons.py +++ b/bin/update_pythons.py @@ -266,9 +266,11 @@ def __init__(self) -> None: # Removing the prefix version = Version(release["name"].removeprefix("Python ")) + self.versions_dict[version] = release["resource_uri"] - uri = int(release["resource_uri"].rstrip("/").split("/")[-1]) - self.versions_dict[version] = uri + files_response = requests.get("https://www.python.org/api/v2/downloads/release_file/") + files_response.raise_for_status() + self.files_info = files_response.json() def update_version(self, identifier: str, spec: Specifier, file_ident: str) -> ConfigUrl | None: # see note above on Specifier.filter @@ -278,13 +280,9 @@ def update_version(self, identifier: str, spec: Specifier, file_ident: str) -> C for new_version in sorted_versions: # Find the first patch version that contains the requested file uri = self.versions_dict[new_version] - response = requests.get( - f"https://www.python.org/api/v2/downloads/release_file/?release={uri}" - ) - response.raise_for_status() - file_info = response.json() + files = [rf for rf in self.files_info if rf["release"] == uri] - urls = [rf["url"] for rf in file_info if file_ident in rf["url"]] + urls = [rf["url"] for rf in files if file_ident in rf["url"]] if urls: return ConfigUrl( identifier=identifier,