Version
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/ suffix
pulp 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.
-
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.
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.
Version
v1.0.0Describe the bug
The
pulp-pythonplugin unconditionally appends the/simple/suffix to theurlprovided 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-fullAttempt 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-basePulp's automatic suffixing logic causes 404 errors in both scenarios.
In Attempt 1, Pulp appends an extra
/simple/, resulting in a "double suffix":https://gitea.example.xyz/api/packages/example/pypi/simple/simple/404 Not Found.In Attempt 2, Pulp strips the last path segment (
/pypi) and appends/simple/, also forming an incorrect URL:https://gitea.example.xyz/api/packages/example/simple/404 Not Found.Expected behavior
Pulp should respect the provided
urlfor 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-isThis would provide the necessary flexibility to integrate with a wider range of non-standard but popular PyPI-compatible endpoints like Gitea.