feat: virtual PyPI repos can merge local + remote members #51

Merged
benvin merged 1 commits from benvin/pypi-virtual-local into master 2026-06-23 22:20:05 +10:00

1 Commits

Author SHA1 Message Date
unkinben 79bf0de110 feat: virtual PyPI repos can merge local + remote members
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/build Pipeline was successful
ci/woodpecker/pr/test Pipeline was successful
The virtual engine now detects local members (repo_type=local) and
generates their package index in-memory instead of trying to fetch
from a non-existent upstream.

- MemberIndex gains RepoType field so mergers use correct URL prefix
  (/api/v1/local/ vs /api/v1/remote/)
- Virtual engine accepts a LocalIndexGenerator interface for producing
  local PyPI indexes
- LocalHandler implements GeneratePyPIPackageHTML for reuse by both
  the direct serving path and the virtual merger
- Includes local PyPI upload support (cherry-picked from benvin/local-pypi)

Tested e2e: local wheel upload + virtual merge + uv pip install from
both direct local and virtual URLs
2026-06-23 22:13:53 +10:00