Generate a pinned lockfile for a Python project's dependencies.
Get a stable, reproducible list of exact package versions to hand to an installer.
Build a custom packaging tool on top of the nab-resolver or nab-index libraries.
Lock down git dependencies to a specific commit for safer builds.
| notatallshaw/nab | 1lystore/awaek | actashui/sjtu-ppt-template-skill | |
|---|---|---|---|
| Stars | 13 | 13 | 13 |
| Language | Python | Python | Python |
| Setup difficulty | easy | moderate | moderate |
| Complexity | 3/5 | 2/5 | 2/5 |
| Audience | developer | vibe coder | researcher |
Figures from each repo's GitHub metadata at analysis time.
Install via pipx or uv as a standalone tool, not as a project dependency.
Nab is an experimental Python tool that solves a common headache in software development: figuring out exactly which version of every package a project needs, so it runs the same way for everyone. You give it your project's dependency list, declared in a pyproject.toml file, and it resolves the full tree of requirements, including all the packages that your direct dependencies themselves depend on, then writes a lockfile that pins every version exactly. Nab does not install packages itself, it just produces the lockfile, and you hand that to whichever installer you prefer. The resolver is based on an algorithm called PubGrub, designed to find a consistent set of package versions that satisfies all constraints at once and to produce helpful error messages when no such set exists. The project's goal is to reach resolver performance similar to uv, another popular Python package tool, while keeping its own implementation written in Python. Nab takes a security conscious approach by default. It tries to extract package metadata without executing any code. If that is not possible, it can build packages to read their metadata, but restricts this to only your own local packages by default, not remote ones. Git dependencies must point to a specific commit rather than a floating branch name, unless you turn that restriction off yourself. The repo also exposes three standalone libraries, nab-resolver, nab-python, and nab-index, that other tools can use to build on the same resolver or index access logic. All are marked experimental and their APIs may change before the project reaches its 0.1.0 release. Installation is meant to happen through a tool manager such as pipx or uv, rather than as a regular project dependency, which keeps it isolated from the packages it is resolving.
An experimental Python tool that resolves your project's dependencies and writes a pinned lockfile, without installing anything itself.
Mainly Python. The stack also includes Python, PubGrub, pyproject.toml.
Setup difficulty is rated easy, with roughly 5min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.