Python Packages

Stout implements the PEP 503 Simple Repository API for Python packages. Serves wheels and sdists — pip install just works.

Configure Your Client

Point pip at your Stout instance:

# One-off install
pip install my-package --index-url https://registry.stout.io/pypi/simple/

# Local development
pip install my-package --index-url http://localhost:7888/pypi/simple/

Or set it permanently in pip.conf:

# ~/.config/pip/pip.conf (Linux/macOS)
[global]
index-url = https://registry.stout.io/pypi/simple/
extra-index-url = https://pypi.org/simple/

For uv:

uv pip install my-package --index-url https://registry.stout.io/pypi/simple/

Install a Package

pip install my-package==1.2.0

Publish a Package

Stout builds from source. Submit a build via the API:

curl -X POST https://registry.stout.io/api/v1/builds \
  -H "Authorization: Bearer $STOUT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "format": "pypi",
    "repo": "https://github.com/myorg/my-package",
    "version": "1.2.0"
  }'

Authentication

For private packages, embed credentials in the URL or use keyring:

# pip.conf with token
[global]
index-url = https://token:${STOUT_TOKEN}@registry.stout.io/pypi/simple/

Or set the environment variable:

export PIP_INDEX_URL=https://token:$STOUT_TOKEN@registry.stout.io/pypi/simple/

Endpoints

Method Path Description
GET /pypi/simple/ Package listing
GET /pypi/simple/{package}/ Version listing with download links
GET /pypi/packages/{file} Download wheel or sdist