nab¶
nab resolves Python project dependencies and writes a PEP 751 lock or pinned requirements. It can download resolved artifacts, but it does not install them.
Keep dependency ranges in pyproject.toml, use nab to select compatible versions, then review the lock before handing it to an installer. The lock includes transitive dependencies and records its target environments. Installing from it reuses the recorded selection; running nab again makes a fresh one.
Start with the Python and platform running nab, declare a deployment target, or lock a matrix of environments. Remote sources are read without building them by default; build policy controls when a backend may run.
Start with a task¶
Make your first lock, then install its dependencies.
Use a lock with pip, hashed requirements, or an offline wheelhouse.
Configure a resolve and inspect effective values.
Use local projects, git sources, multiple indexes, or workspaces.
Use a direct archive source with a required digest.
Reason about PEP 508 markers as sets of environments.
Diagnose a failed resolve from its error and
Diagnostics:section.Check the CLI, output formats, or cache.
Embed the generic resolver in another tool.
Status¶
nab is experimental. The table below states the current boundary; feature pages carry their own stability warnings.
Area |
Current boundary |
|---|---|
Runtime |
CPython 3.10 and newer. Other interpreters are not tested. |
Commands |
|
Sources |
Simple indexes, local checkouts, declared git sources, hash-pinned |
Output |
PEP 751 |
Experimental features |
Universal locks, multiple indexes, and workspaces. Their feature pages state the current boundary. |
Embedding |
|
Tutorial
How-to guides
Reference
Project