@@ -1593,20 +1593,24 @@ def fetch_links(
1593
1593
for anchor_tag in anchor_tags :
1594
1594
python_requires = None
1595
1595
url , _ , _sha256 = anchor_tag ["href" ].partition ("#sha256=" )
1596
- if url .startswith (".." ):
1597
- # Handle relative links
1598
- url = urljoin (package_url , url )
1599
1596
if "data-requires-python" in anchor_tag .attrs :
1600
1597
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
1605
1599
links .append (Link (url = url , python_requires = python_requires ))
1606
1600
# TODO: keep sha256
1607
1601
return links
1608
1602
1609
1603
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
+
1610
1614
PYPI_PUBLIC_REPO = PypiSimpleRepository (index_url = PYPI_SIMPLE_URL )
1611
1615
DEFAULT_PYPI_REPOS = (PYPI_PUBLIC_REPO ,)
1612
1616
DEFAULT_PYPI_REPOS_BY_URL = {r .index_url : r for r in DEFAULT_PYPI_REPOS }
0 commit comments