Skip to main content

Resolve, inspect, and cache conda solve results through CLI, HTTP, CI, and solver integrations

Project description

conda-presto

conda-presto resolves conda package specifications without creating or changing an environment. It accepts inline specs or environment files, selects fully pinned packages for one or more platforms, and writes native JSON or a conda exporter format.

The same solve engine is available through the conda presto CLI, a Litestar HTTP API, a GitHub Action, and an internal broker-backed conda --solver=presto plugin. The internal solver delegates only final-state selection. Conda still owns package downloads and prefix transactions locally.

Capabilities

  • Resolve inline specs or supported environment inputs selected through conda environment specifier plugins
  • Solve several target platforms with deterministic target virtual-package defaults
  • Write native package metadata or any installed conda exporter format
  • Convert covered lockfiles through the CLI without solving
  • Inspect lockfile metadata over HTTP without loading package records
  • Parse and review inputs through /parse, /preflight, /repair, /diff, and /explain
  • Prepare, resolve, examine, and export environments in the first-party browser workbench
  • Retain HTTP results under content-addressed /r/<hash> locations with memory, file, or Redis storage
  • Run a persistent public HTTP worker in the server container
  • Run an opt-in broker-managed loopback service for repeated local work
  • Delegate internal conda final-state solves through conda --solver=presto
  • Record repeated solver requests and refresh missing or stale private final states during broker idle time
  • Resolve environments in GitHub Actions through local CLI or remote HTTP modes
  • Select packages with conda-rattler-solver

Quick start

conda create --name conda-presto \
  --override-channels \
  --channel conda-forge \
  python=3.13 \
  'conda>=26.5,<27' \
  'conda-rattler-solver>=0.1.1,<0.2' \
  'conda-lockfiles>=0.2.1' \
  pip
conda activate conda-presto
python -m pip install conda-presto
conda presto -c conda-forge -p linux-64 python=3.13 numpy

conda-presto is installed from PyPI into a conda environment that supplies conda and its solver plugins. It is not currently published as a conda package. See the quick start for released, current-main, and source-checkout installation paths, file inputs, lockfile output, and the local HTTP server.

Run the HTTP server

docker run --detach \
  --name conda-presto \
  --publish 127.0.0.1:8000:8000 \
  --cap-drop ALL \
  --security-opt no-new-privileges \
  ghcr.io/jezdez/conda-presto:0.8.0
for _ in {1..180}
do
  if curl --fail --silent http://127.0.0.1:8000/health >/dev/null
  then
    break
  fi
  sleep 1
done
curl --fail --silent --show-error http://127.0.0.1:8000/health

The server image listens on port 8000 inside the container and runs one persistent foreground worker. It does not start conda-broker, expose the internal solver route, or run scheduled solver-cache refresh.

The 0.8.0 server image serves the browser workbench at http://127.0.0.1:8000/ and the generated OpenAPI document at http://127.0.0.1:8000/openapi.json.

See Run conda-presto with Docker and the Docker image reference.

Run the broker-managed service

conda-presto registers the manual conda-presto.server service with conda-broker. The service binds to a broker-assigned loopback port and keeps its foreground solver worker loaded between requests.

conda broker start conda-presto.server
conda broker wait conda-presto.server --timeout 180
conda broker endpoint conda-presto.server

See Run the broker-managed service for lifecycle, configuration capture, logs, and trust boundaries.

Use the internal Presto solver

After the broker service is ready, select the internal backend for one conda operation:

conda create --dry-run --solver=presto -n demo -c conda-forge python=3.13

The backend is local-only and tied to the broker service. It is not a remote solver protocol and is not available through the Docker server image. See Use the Presto solver and the solver reference.

Documentation

  • Tutorials for guided CLI, HTTP, review, and local-service workflows
  • How-to guides for Docker, broker, cache, monitoring, troubleshooting, and CI tasks
  • Reference for exact interfaces, service contracts, cache behavior, and configuration
  • Explanation for architecture, deployment models, review semantics, caching, performance, and security
  • Roadmap for shipped streams and linked future work
  • Changelog for release history

Development

git clone https://github.com/jezdez/conda-presto.git
cd conda-presto
pixi install
pixi run lint
pixi run format
pixi run -e test test
pixi run -e test bench
pixi run serve
pixi run -e docs docs

License

BSD-3-Clause

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

conda_presto-0.8.0.tar.gz (436.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

conda_presto-0.8.0-py3-none-any.whl (207.3 kB view details)

Uploaded Python 3

File details

Details for the file conda_presto-0.8.0.tar.gz.

File metadata

  • Download URL: conda_presto-0.8.0.tar.gz
  • Upload date:
  • Size: 436.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for conda_presto-0.8.0.tar.gz
Algorithm Hash digest
SHA256 e1ad59670f7aaf16e248e79e083358d0c3d1078240593ffdbac71575f2a52429
MD5 636e0ad5eee627ea42b01f66f94cac90
BLAKE2b-256 9e443e3103a0f7a9037da3b6b240f5eeb6c3399542987bad77fc688c39fca503

See more details on using hashes here.

Provenance

The following attestation bundles were made for conda_presto-0.8.0.tar.gz:

Publisher: release.yml on jezdez/conda-presto

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file conda_presto-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: conda_presto-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 207.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for conda_presto-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7d87bb256ce2c2a6b28d34e76ae7f97386292410a9ef069e20511aa51ea5af92
MD5 342771a5ce617dc957b8b0115d31f5bc
BLAKE2b-256 2b62072c984c67f0e4de0f1700d366c6dd7f273d7a5e346627f0c5f5a7d985c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for conda_presto-0.8.0-py3-none-any.whl:

Publisher: release.yml on jezdez/conda-presto

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page