-
Notifications
You must be signed in to change notification settings - Fork 79
Description
Version
- Pulp Operator:
v1.0.0
Describe the bug
The pulp-python
plugin unconditionally appends the /simple/
suffix to the url
provided for a Python remote. This behavior is hardcoded and assumes the remote URL points to a repository root that needs /simple/
added to reach the PEP 503 index.
This assumption breaks compatibility with PyPI-compatible registries like Gitea, where the complete, non-modifiable simple index URL is already provided. The forced suffix leads to incorrect URL generation.
To Reproduce
* Gitea Instance with a PyPI Registry: e.g., https://gitea.example.xyz
* Target Gitea PyPI URL: https://gitea.example.xyz/api/packages/example/pypi/simple/
-
Attempt 1: Provide the full, correct URL ending in
/simple/
pulp python remote create \ --name gitea-remote-full \ --url https://gitea.example.xyz/api/packages/example/pypi/simple/ \ --username <user> \ --password <pass> pulp python repository create --name test-repo-1 pulp python repository sync --name test-repo-1 --remote gitea-remote-full
-
Attempt 2: Provide the URL without the
/simple/
suffixpulp python remote create \ --name gitea-remote-base \ --url https://gitea.example.xyz/api/packages/example/pypi \ --username <user> \ --password <pass> pulp python repository create --name test-repo-2 pulp python repository sync --name test-repo-2 --remote gitea-remote-base
Pulp's automatic suffixing logic causes 404 errors in both scenarios.
-
In Attempt 1, Pulp appends an extra
/simple/
, resulting in a "double suffix":- URL requested:
https://gitea.example.xyz/api/packages/example/pypi/simple/simple/
- Result:
404 Not Found
.
- URL requested:
-
In Attempt 2, Pulp strips the last path segment (
/pypi
) and appends/simple/
, also forming an incorrect URL:- URL requested:
https://gitea.example.xyz/api/packages/example/simple/
- Result:
404 Not Found
.
- URL requested:
Expected behavior
Pulp should respect the provided url
for a Python remote. When a URL is provided, Pulp should either:
a. Use the URL as-is, without modification.
b. Check if the URL already ends with /simple/
and, if so, refrain from appending it again.
For the configuration in Attempt 1, Pulp should make requests directly to https://gitea.example.xyz/api/packages/example/pypi/simple/
.
Additional context
This behavior makes it impossible to use Gitea as a PyPI remote source for Pulp. More broadly, it limits Pulp's compatibility with any PyPI-compliant repository that provides a full, unchangeable URL to its simple index and does not conform to the exact .../
-> .../simple/
transformation that Pulp enforces.
A fix should be relatively easy: Modify the URL construction logic to first check if url.endswith('/simple/')
. If true, use the URL as-is
This would provide the necessary flexibility to integrate with a wider range of non-standard but popular PyPI-compatible endpoints like Gitea.