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.25

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.25
File Size Uploaded Provenance Actions
nab_resolver-0.0.25.tar.gz 174.4 kB With provenance Details for nab_resolver-0.0.25.tar.gz

Built distribution (wheel)

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

Total release size: 236.6 kB

Release files / nab_resolver-0.0.25.tar.gz

Download URL nab_resolver-0.0.25.tar.gz
Size 174.4 kB
Tags Source
SHA-256 checksum
How to use checksums
2b6c4eeb14e8a45951411a31c8e484d58b7b96b22293be3fb13d410122dee325
BLAKE2b-256 checksum
How to use checksums
307c3ea09ff7526ec2bb1f39a9ff378e1701284cf0041656e9233c20aac50a89
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 4, 2026.

Transparency log

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

Download URL nab_resolver-0.0.25-py3-none-any.whl
Size 62.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f8c9933afc924c1d502bb6d920c35f6cf952d73f3e415a4ecb786235edf8d8e3
BLAKE2b-256 checksum
How to use checksums
2b4a7038e1f15495cbbaadcdbd857b54a22fb123fa0b738b3984cadd6797ab6f
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 4, 2026.

Transparency log

Security for nab-resolver 0.0.25

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.25.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 4, 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