Skip to content

Repository files navigation

go-pyresolver

Python dependency resolution for Go: the Python-aware adapter that drives a generic PubGrub solver with PyPI metadata.

Part of RFD 0001 — Native Go PyPI Dependency Resolution.

Status: skeleton. Packages are populated per RFD 0001 Phase 3. Nothing here is usable yet, and the module has no released version.

Where this sits

Three Posit-owned Go modules divide the work:

Module Role
go-python-packaging PEP primitives — PEP 440 versions, PEP 508 requirements and markers, PEP 685 extras, wheel/METADATA parsing, compatibility tags
go-pubgrub The version-solving algorithm, deliberately language-agnostic so it can serve future R or Julia resolution
go-pyresolver (this module) The Python-aware glue between the two, plus metadata retrieval

Packages

Package Scope
pypirsf/ PyPI record layout and dependency-blob decoder for Repository Snapshot Format files
index/ MetadataIndex — the seam between resolver and storage — and its implementations
candidate/ Which version to try next, and which distribution file represents it
provider/ Adapts Python semantics (notably extras) to the generic solver
resolver/ The public entry point

Where dependency metadata comes from

Resolution needs two things: which versions of a package exist, and what each version requires. Both live in a Repository Snapshot Format (RSF) file, so a resolution reads one local file and makes no per-package network request. That is what makes offline and reproducible resolution possible.

pypirsf/ decodes that file. You supply the file; this module does not fetch it.

The resolver core never makes an HTTP request and never touches a database. It calls MetadataIndex, and the implementation decides where the bytes come from. That is what lets one resolver serve connected PPM, air-gapped PPM, local Python sources, and tests.

Build & test

go build ./...
go test ./...
go vet ./...

Module floor is Go 1.25, matching go-python-packaging (conservative for a public library; PPM consumes it fine at 1.26).

License

Dual-licensed under Apache-2.0 OR MIT at your option. Every source file carries SPDX-License-Identifier: Apache-2.0 OR MIT. See NOTICE for attribution.

About

Python dependency resolution for Go: the Python-aware adapter driving a generic PubGrub solver with PyPI metadata.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages