https://github.com/python/cpython/commit/91d9e9e64e3e1c62e9a324e246a2e350f7bc9ca4
commit: 91d9e9e64e3e1c62e9a324e246a2e350f7bc9ca4
branch: 3.14
author: Miss Islington (bot) <[email protected]>
committer: hugovk <[email protected]>
date: 2025-06-17T12:16:17Z
summary:

[3.14] gh-134262: Catch both URLError and ConnectionError in retries 
(GH-135365) (#135611)

Co-authored-by: Emma Smith <[email protected]>

files:
M PCbuild/get_external.py
M Tools/build/generate_sbom.py

diff --git a/PCbuild/get_external.py b/PCbuild/get_external.py
index 8c1155c74a642c..a78aa6a23041ad 100755
--- a/PCbuild/get_external.py
+++ b/PCbuild/get_external.py
@@ -5,8 +5,9 @@
 import pathlib
 import sys
 import time
+import urllib.error
+import urllib.request
 import zipfile
-from urllib.request import urlretrieve
 
 
 def retrieve_with_retries(download_location, output_path, reporthook,
@@ -14,12 +15,12 @@ def retrieve_with_retries(download_location, output_path, 
reporthook,
     """Download a file with exponential backoff retry and save to disk."""
     for attempt in range(max_retries + 1):
         try:
-            resp = urlretrieve(
+            resp = urllib.request.urlretrieve(
                 download_location,
                 output_path,
                 reporthook=reporthook,
             )
-        except ConnectionError as ex:
+        except (urllib.error.URLError, ConnectionError) as ex:
             if attempt == max_retries:
                 msg = f"Download from {download_location} failed."
                 raise OSError(msg) from ex
diff --git a/Tools/build/generate_sbom.py b/Tools/build/generate_sbom.py
index df52f8de762a01..968397728b2f67 100644
--- a/Tools/build/generate_sbom.py
+++ b/Tools/build/generate_sbom.py
@@ -172,7 +172,7 @@ def download_with_retries(download_location: str,
     for attempt in range(max_retries + 1):
         try:
             resp = urllib.request.urlopen(download_location)
-        except urllib.error.URLError as ex:
+        except (urllib.error.URLError, ConnectionError) as ex:
             if attempt == max_retries:
                 msg = f"Download from {download_location} failed."
                 raise OSError(msg) from ex

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to