Working with PyPI
Proxy Repository
Hosted Repository
After creation, the repository is available at https://save.example.com/pypi/<project>/<repository>/. The simple index is available under /simple/; package upload (twine-compatible POST) uses the repository root.
Client Configuration
pip
- Linux/macOS:
~/.config/pip/pip.confor~/.pip/pip.conf - Windows:
%APPDATA%\pip\pip.ini - In virtualenv:
$VIRTUAL_ENV/pip.conf
For CI/CD, use a robot account: username = sa$<robot-name>, password = <api-key>. The pip.conf structure remains the same; only username changes. For details, see Authentication.
poetry
In pyproject.toml:
Credentials are passed through poetry config:
pipenv
In Pipfile:
uv
Or in pyproject.toml:
Publishing (twine, hosted)
Packages are uploaded to a hosted repository with standard twine upload. The upload URL is the repository root without /simple/.
Repository URL Migration
Use case: migrating a PyPI repository from Nexus / Artifactory to CodeScoring.Save.
Authentication parameters (username / password) and the pip.conf format remain unchanged.
Troubleshooting
Checking the Simple Index
The response is an HTML page with links to package files. If the page is empty or returns 404, the package is not cached and upstream did not return it.
