Skip to main content

nab-resolver

Find a combination of package versions that satisfies their dependency constraints, using the PubGrub algorithm. A ResolverProvider supplies the package rules, so the solver needs no Python-specific knowledge. The Python provider lives in nab-provider and the user-facing CLI in nab.

It has no runtime dependencies: the standard library is all it needs.

When to use it

Use nab-resolver when you are building some kind of package resolver, Python or otherwise. There is a worked example in the docs: https://nab.readthedocs.io/en/stable/how-to/embed-the-resolver.html

The public API

The supported API is the module paths below. They will not move without a major version bump. Everything else in the package is internal and may be renamed or relocated in any release.

nab_resolver.errors     ResolutionError, ResolutionInvariantError,
                        ResolutionLimitError, ResolutionStalledError,
                        ResolutionTerminatedError
nab_resolver.ranges     Range
nab_resolver.resolver   BaseProvider, DEFAULT_MAX_ITERATIONS, Resolver,
                        ResolverObserver, ResolverProvider, Solution
nab_resolver.root       ROOT
nab_resolver.types      Incompatibility, IncompatibilityCause,
                        RangeProtocol, RootRequirement, Term

The package root binds no names, so importing nab_resolver pulls in no submodules and a caller loads only what it imports.

Checking preferred versions

try_resolve_preferred checks a proposed assignment against the current provider's version choices, dependencies and emitted incompatibilities. It returns the reachable pins on success, or None when ordinary resolution is needed.

Requirements or constraints can force a different version from the preference. If the preferred version remains in range but the provider chooses another, the trial refuses and leaves the choice to ordinary search.

trial = Resolver(make_provider())
pins = trial.try_resolve_preferred(requirements, preferred, constraints)
if pins is None:
    pins = Resolver(make_provider()).resolve(requirements, constraints)

The trial consumes its resolver and provider. Create both again before falling back; provider callbacks may have queued facts during the trial. Nab's project layer owns these attempts for each target and retains package names and alignment preferences between targets.

Metadata

Release files for nab-resolver 0.0.26

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nab-resolver 0.0.26
File Size Uploaded Provenance Actions
nab_resolver-0.0.26.tar.gz 174.4 kB With provenance Details for nab_resolver-0.0.26.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for nab-resolver 0.0.26
File Interpreter ABI Platform Actions
nab_resolver-0.0.26-py3-none-any.whl Python 3 none any Details for nab_resolver-0.0.26-py3-none-any.whl

Total release size: 236.6 kB

Release files / nab_resolver-0.0.26.tar.gz

Download URL nab_resolver-0.0.26.tar.gz
Size 174.4 kB
Tags Source
SHA-256 checksum
How to use checksums
f3514fbd15bfea6f48e01fe42b7afc1f47a2e2b684a755c0cdc984b8c7217e83
BLAKE2b-256 checksum
How to use checksums
14db5c2052feb4385576e6ea81cc3fcd5e6a7a67d5a1262a362b0ed6c66c08fb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

Release files / nab_resolver-0.0.26-py3-none-any.whl

Download URL nab_resolver-0.0.26-py3-none-any.whl
Size 62.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
57e6881324065bbbd68703aad70bc7b8ee08b0c6ec4b30556682b5551d92a3cb
BLAKE2b-256 checksum
How to use checksums
0ccb33e976cd62269f245b66b401f64f8121eb13b01138cf354db4d43800a8e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

Security for nab-resolver 0.0.26

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for nab_resolver-0.0.26.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page