Skip to content

resolve

Resolve the full dependency tree for one or more requirements, producing a flat list of pinned package versions.

Requires uv to be installed. See Installation for setup details.

Usage

peeq resolve <requirements>... [options]

Arguments

Argument Description
requirements One or more PEP 508 requirement strings. Required.

Arguments are PEP 508 requirement strings — not bare package names. You can pin or constrain versions with specifiers (e.g., "requests==2.31.0", "flask>=3.0"). A bare name like "requests" is valid and resolves to the latest compatible version.

Quote each requirement in your shell to prevent specifier characters (>, <, !) from being interpreted.

Options

Option Type Default Description
--pre, --prerelease flag off Include pre-release versions in resolution.
--python string current Target Python version (e.g., 3.12).
--platform string current Target platform: linux, win32, darwin.

Cross-platform resolution

By default, peeq resolves for the current host environment. Use --python and --platform to resolve for a different target:

peeq resolve "requests>=2.31.0" --python 3.12 --platform linux

This evaluates PEP 508 environment markers against the specified target, so platform-conditional dependencies are included or excluded correctly.

Examples

Resolve a single requirement

$ peeq resolve "flask>=3.0"
Resolved 8 packages:
  - blinker==1.9.0
  - click==8.3.1
  - colorama==0.4.6
  - flask==3.1.3
  - itsdangerous==2.2.0
  - jinja2==3.1.6
  - markupsafe==3.0.3
  - werkzeug==3.1.8

Solver: uv

Resolve multiple requirements

$ peeq resolve "requests>=2.31.0" "flask>=3.0"
Resolved 13 packages:
  - blinker==1.9.0
  - certifi==2026.2.25
  - charset-normalizer==3.4.7
  - click==8.3.1
  - colorama==0.4.6
  - flask==3.1.3
  - idna==3.11
  - itsdangerous==2.2.0
  - jinja2==3.1.6
  - markupsafe==3.0.3
  - requests==2.33.1
  - urllib3==2.6.3
  - werkzeug==3.1.8

Solver: uv

Resolve for a different platform

$ peeq resolve "requests>=2.31.0" --python 3.12 --platform linux
Resolved 5 packages:
  - certifi==2026.2.25
  - charset-normalizer==3.4.7
  - idna==3.11
  - requests==2.33.1
  - urllib3==2.6.3

Solver: uv

Note that colorama is absent — it is only required on Windows.

Handle conflicts

When requirements are incompatible, resolve exits with an error and displays the conflicting constraints:

$ peeq resolve "django>=4.2,<5" "django>=5.0"
CONFLICT: (unknown)

Because you require django>=4.2,<5 and django>=5.0, we can conclude
that your requirements are unsatisfiable.

Use conflicts for the same behavior with pre-release versions included by default.

See also

  • conflicts — check compatibility with pre-releases enabled by default.
  • why — trace why a specific package appears in the resolved tree.
  • deps — view declared dependencies for a single package.