@@ -1593,20 +1593,24 @@ def fetch_links(
15931593 for anchor_tag in anchor_tags :
15941594 python_requires = None
15951595 url , _ , _sha256 = anchor_tag ["href" ].partition ("#sha256=" )
1596- if url .startswith (".." ):
1597- # Handle relative links
1598- url = urljoin (package_url , url )
15991596 if "data-requires-python" in anchor_tag .attrs :
16001597 python_requires = anchor_tag .attrs ["data-requires-python" ]
1601- # Check if the link is a relative URL
1602- if not url .startswith (("http://" , "https://" )):
1603- base_url = "/" .join (package_url .split ("/" )[:- 1 ]) # Extract base URL
1604- url = urljoin (base_url , url ) # Resolve relative URL
1598+ url = resolve_relative_url (package_url , url ) # Resolve relative URL
16051599 links .append (Link (url = url , python_requires = python_requires ))
16061600 # TODO: keep sha256
16071601 return links
16081602
16091603
1604+ def resolve_relative_url (package_url , url ):
1605+ """
1606+ Resolve a relative URL based on the package URL.
1607+ """
1608+ if not url .startswith (("http://" , "https://" )):
1609+ base_url = "/" .join (package_url .split ("/" )[:- 1 ]) # Extract base URL
1610+ url = urljoin (base_url , url ) # Resolve relative URL
1611+ return url
1612+
1613+
16101614PYPI_PUBLIC_REPO = PypiSimpleRepository (index_url = PYPI_SIMPLE_URL )
16111615DEFAULT_PYPI_REPOS = (PYPI_PUBLIC_REPO ,)
16121616DEFAULT_PYPI_REPOS_BY_URL = {r .index_url : r for r in DEFAULT_PYPI_REPOS }
0 commit comments