nab

A PubGrub-based dependency resolver for Python packages.

nab is resolve-only: it produces a pinned set of versions (or a PEP 751 lockfile) but never installs. Hand the lockfile to whatever installer you trust.

Where to start

Tutorial

Project

Status

  • Single-environment resolution against PyPI

  • Multiple indexes, per-package routing, and local-checkout sources

  • VCS dependency admission with policy controls (Layer 2: clone + static metadata)

  • Direct-URL .tar.gz archive sources, hash-verified and pinned as PEP 751 packages.archive

  • PEP 751 lockfile emission via the upstream packaging library

  • Universal resolution across a user-declared (python, platform, implementation) matrix. Opt-in via [tool.nab].mode = "universal"; the API and output format are still subject to change.

  • Mutually-exclusive extras and dependency groups via [tool.nab].conflicts: co-selected members fork the resolve, in specific and universal mode. See conflicts.