in build_scripts/check_links.py [0:0]
def check_url(url, retries=2, delay=2):
"""
Check the validity of a URL, with retries if it fails.
Args:
url (str): URL to check.
retries (int, optional): Number of retries if the URL check fails. Defaults to 2.
delay (int, optional): Delay in seconds between retries. Defaults to 2.
Returns:
tuple: A tuple containing the URL and a boolean indicating whether it is valid.
"""
if (
"http://localhost:" in url
or url in skipped_urls
or any(url.endswith(reference) for reference in custom_myst_references)
or os.path.isfile(url)
or os.path.isdir(url)
or url.startswith("mailto:")
or url.startswith("attachment:")
):
return url, True
attempts = 0
while attempts <= retries:
try:
response = requests.head(url, allow_redirects=True, timeout=5)
if response.status_code >= 400:
attempts += 1
if attempts > retries:
return url, False
time.sleep(delay)
else:
return url, True
except requests.RequestException:
attempts += 1
if attempts > retries:
return url, False
time.sleep(delay)