[BUG] uv sync fails outside the GS network: internal index pinned as default in pyproject.toml
Describe the bug
uv sync fails on a clean clone of master for anyone outside the Goldman Sachs network, because pyproject.toml pins an internal-only package index as uv's default index.
To Reproduce Clean clone, off the GS network, uv 0.9.2:
$ uv sync
× Failed to build `gs-quant @ file:///.../gs-quant`
├─▶ Failed to resolve requirements from `build-system.requires`
├─▶ No solution found when resolving: `setuptools>=61.0`, `versioneer[toml]==0.28`
├─▶ Request failed after 3 retries
├─▶ Failed to fetch: `https://pypi.aws.site.gs.com/repository/pypi-group/simple/versioneer/`
├─▶ error sending request for url (...)
├─▶ client error (Connect)
├─▶ dns error
╰─▶ failed to lookup address information: nodename nor servname provided, or not knownBlocker — internal index is uv's default index
pyproject.toml lines 220-226:
[[tool.uv.index]]
name = "aws"
url = "https://pypi.aws.site.gs.com/repository/pypi-group/simple"
default = true
[tool.uv.pip]
index-url = "https://pypi.aws.site.gs.com/repository/pypi-group/simple"
default = true replaces PyPI rather than supplementing it, so every resolution goes to a host that doesn't resolve publicly. It fails at build-system.requires because uv resolves the build backend before reading the dependency list.
This does not affect pip install gs-quant, only source clones using uv are affected.
It also appears not to affect
CI: .gitlab-ci.yml installs via pip3 install -i $GS_PYPI_URL --trusted-host $GS_PYPI_HOST .[test] and never invokes uv, and .github/workflows/python-publish.yml uses pip install build twine against public PyPI. The usual way to keep an internal mirror without shipping it to external users is the UV_DEFAULT_INDEX / UV_INDEX_URL environment variables or a machine-level ~/.config/uv/uv.toml.
Environment
- uv 0.9.2, macOS (arm64), Python 3.14.0
- master @ a1427df (release 2.1.12)
Source: goldmansachs/gs-quant