Skip to content

Releases: jezdez/conda-presto

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 24 Jul 21:15
Immutable release. Only release title and notes can be modified.
563bbf4

What's Changed

  • Build(deps): bump actions/checkout from 7.0.0 to 7.0.1 by @dependabot[bot] in #87
  • Build(deps): bump actions/attest from 4.1.1 to 4.2.0 by @dependabot[bot] in #86
  • Build(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 by @dependabot[bot] in #83
  • Add the browser workbench by @jezdez in #89
  • Prepare v0.8.0 release by @jezdez in #90

Full Changelog: v0.7.0...v0.8.0

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 24 Jul 14:19
Immutable release. Only release title and notes can be modified.
38a49c5

What's Changed

  • Update v0.6.0 documentation examples by @jezdez in #73
  • Add repair suggestions by @jezdez in #74
  • Add broker-managed local service by @jezdez in #75
  • Add internal Presto solver backend by @jezdez in #76
  • Track solver requests for cache warming by @jezdez in #79
  • Refresh cached solver results in the broker by @jezdez in #80
  • Reorganize documentation for 0.7.0 by @jezdez in #81
  • Prepare v0.7.0 release by @jezdez in #82

Full Changelog: v0.6.0...v0.7.0

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 10 Jul 21:52
Immutable release. Only release title and notes can be modified.
423088d

What's Changed

  • Improve README deployment links by @jezdez in #66
  • Add preflight validation endpoint by @jezdez in #67
  • Add environment diff endpoint by @jezdez in #68
  • Add package explain endpoint by @jezdez in #69
  • Align parse and transcode handlers with Litestar by @jezdez in #70
  • Close v0.6 documentation by @jezdez in #71
  • Prepare v0.6.0 release notes by @jezdez in #72

Full Changelog: v0.5.1...v0.6.0

v0.5.1

Choose a tag to compare

@github-actions github-actions released this 10 Jul 08:08
Immutable release. Only release title and notes can be modified.
e13306e

What's Changed

  • Dispatch Docker publishing from releases by @jezdez in #63
  • Include README in package metadata by @jezdez in #64
  • Enable Redis cache in server image by @jezdez in #65

Full Changelog: v0.5.0...v0.5.1

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 10 Jul 00:34
Immutable release. Only release title and notes can be modified.
f7740fc

What's Changed

  • Build(deps): bump docker/login-action from 3 to 4 by @dependabot[bot] in #8
  • Add native MCP server and GitHub Action by @jezdez in #9
  • Add Sphinx documentation site and GitHub Pages deployment by @jezdez in #25
  • Fix mermaid diagram whitespace in pydata theme by @jezdez in #26
  • Build(deps): bump prefix-dev/setup-pixi from 0.8.8 to 0.9.6 by @dependabot[bot] in #32
  • Build(deps): bump actions/deploy-pages from 4 to 5 by @dependabot[bot] in #33
  • Build(deps): bump actions/upload-pages-artifact from 4 to 5 by @dependabot[bot] in #34
  • Update project dependencies by @jezdez in #35
  • Rework GitHub Action for CI workflows by @jezdez in #29
  • Move proposal details to issues by @jezdez in #41
  • Flatten proposals docs page by @jezdez in #42
  • Remove agent integration surface by @jezdez in #44
  • Add agent coding guidelines by @jezdez in #47
  • Add lockfile transcode endpoint by @jezdez in #43
  • Harden GitHub Action solve workflow by @jezdez in #45
  • Fix Litestar query parameter warnings by @jezdez in #48
  • Build(deps): bump actions/checkout from 5.0.0 to 7.0.0 by @dependabot[bot] in #37
  • Build(deps): bump actions/cache from 5 to 6 by @dependabot[bot] in #38
  • Build(deps): bump prefix-dev/setup-pixi from 0.9.6 to 0.10.0 by @dependabot[bot] in #36
  • Add content-addressed result cache by @jezdez in #46
  • Update v0.5 foundations docs by @jezdez in #49
  • Update Pixi dependencies to stable conda-forge versions by @jezdez in #51
  • Document Streamlit deployment by @jezdez in #50
  • Add Streamlit test app by @jezdez in #52
  • Speed up Streamlit Cloud dependency solve by @jezdez in #53
  • Pin Streamlit Cloud Python to 3.14 by @jezdez in #54
  • Replace Streamlit demo with Hugging Face Space by @jezdez in #55
  • Remove Hugging Face deployment by @jezdez in #57
  • Prepare v0.5.0 release by @jezdez in #56
  • Add PyPI release workflow by @jezdez in #58
  • Fix PyPI metadata and Docker versioning by @jezdez in #59
  • Terminate timed-out solves and harden workflows by @jezdez in #60
  • Prepare v0.5.0 release by @jezdez in #61
  • Fix Docker workflow build arguments by @jezdez in #62

Full Changelog: v0.4.0...v0.5.0

v0.4.0

Choose a tag to compare

@jezdez jezdez released this 16 Apr 16:59
f7c5990

Added

  • POST /resolve now dispatches on Content-Type: application/json (or missing) keeps the existing ResolveRequest envelope behavior; application/yaml / application/x-yaml / text/yaml / application/toml / text/plain treat the body as a raw environment file, parsed through conda's env-spec plugin registry. Specs, channels, platforms, and format come from query params on the raw-body dispatch; ?filename= picks the parser when Content-Type alone is ambiguous. Unsupported Content-Types return HTTP 400 with the list of accepted types. This makes curl --data-binary @environment.yml -H 'Content-Type: application/yaml' '.../resolve?format=pixi-lock-v6&platform=linux-64' a one-liner — no jq or JSON wrapping required.
  • HTTP API ?format=<name> query parameter on GET/POST /resolve routes the response through conda's exporter plugin registry. The CLI (--format) and HTTP API share the same render_envs helper so both surfaces expose the same set of formats. Unknown formats return HTTP 400 with the available-format list; solver failures on this path return HTTP 500 (exporters can't represent per-platform errors).
  • conda-lockfiles >=0.1.1 is now a base dependency, so conda-lock-v1 and rattler-lock-v6/pixi-lock-v6 are available out of the box from both CLI and HTTP API.
  • Windows virtual package override via CONDA_PRESTO_WIN_VERSION (default 0) so cross-platform win-* solves get the same treatment as Linux/macOS.
  • Per-request abuse/DoS caps: CONDA_PRESTO_MAX_SPECS (default 200, returns 400), CONDA_PRESTO_MAX_PLATFORMS (default 8, returns 400), and CONDA_PRESTO_SOLVE_TIMEOUT_S (default 60s, returns 504).
  • Process pool is shut down cleanly via Litestar's on_shutdown hook.

Changed

  • HTTP API now returns SolveResult / ResolvedPackage msgspec.Struct instances directly; Litestar encodes them natively to JSON without an intermediate to_dict() conversion.
  • CLI default output is now produced by msgspec.json.encode on the same list[SolveResult] the HTTP API returns, pretty-printed via msgspec.json.format(..., indent=2). CLI and HTTP emit identical JSON (modulo whitespace), including a per-platform "error" field (was previously absent from the CLI default). This is an additive change to the schema — correct JSON parsers continue to work.
  • POST body fields override query params based on presence, not truthiness. An explicit empty array in the body (e.g. {"platforms": []}) now overrides the corresponding query param, matching the documented behavior.
  • Solver error responses surface detail only for an allow-list of known exception types (UnsatisfiableError, PackagesNotFoundError); all other exceptions return a generic "Internal solver error" message. Full detail is still logged server-side.
  • Environment-variable parsing is centralized through env_int and env_list helpers: list values now strip whitespace and drop empty parts, and numeric values fail with a clear startup error instead of a raw ValueError from int().

Removed

  • resolve-json conda exporter plugin and the conda_environment_exporters hook entry. It duplicated the SolveResult/ResolvedPackage msgspec shape for no good reason; the CLI now produces that shape natively. Minor user-visible consequences:
    • conda presto --format resolve-json ... now errors with "Unknown format". Fix: drop --format; the default output is the same JSON shape (plus a "error" field per platform).
    • HTTP GET/POST /resolve?format=resolve-json returns HTTP 400 for the same reason. Drop the query parameter.
    • conda env export --format resolve-json (invoked from plain conda on an installed prefix, with conda-presto installed) no longer works. This was never conda-presto's intended use case.
  • ResolvedPackage.to_dict and SolveResult.to_dict methods: no longer called anywhere; msgspec serializes the structs directly.

Fixed

  • HTTP Content-Type on ?format= responses is now derived from the exporter's default_filenames rather than a hand-coded format-name table. YAML-ish formats (environment-yaml, conda-lock-v1, rattler-lock-v6/pixi-lock-v6) are now served as application/yaml instead of text/plain.
  • Tempfile lifetime bug in parse_file_content: specs and channels are now extracted while the temp file is still open, preventing races with env-spec plugins that read the file lazily on attribute access.
  • README documentation of the index-cache TTL was inaccurate. The on-disk repodata TTL (CONDA_LOCAL_REPODATA_TTL) and the in-memory RattlerIndexHelper cache (no TTL, process-lifetime) are now described separately.

v0.3.0

Choose a tag to compare

@jezdez jezdez released this 16 Apr 14:04
b56240c

Added

  • Interactive API documentation (Scalar UI) at / with auto-generated OpenAPI 3.1 schema at /openapi.json, replacing the hand-written ~190-line schema dictionary.
  • Production middleware: brotli compression with gzip fallback, CORS (configurable via CONDA_PRESTO_CORS_ORIGINS, default *), structured request logging, and rate limiting (configurable via CONDA_PRESTO_RATE_LIMIT, default 300 req/min, 0 to disable).
  • New environment variables: CONDA_PRESTO_RATE_LIMIT, CONDA_PRESTO_CORS_ORIGINS, CONDA_PRESTO_LOG_LEVEL.
  • Native request body size enforcement via Litestar's request_max_body_size (configurable via CONDA_PRESTO_MAX_BODY_BYTES, default 1 MB).

Changed

  • Migrated HTTP API framework from Starlette to Litestar. Typed request validation via ResolveRequest dataclass replaces manual JSON parsing.
  • Migrated ResolvedPackage and SolveResult from dataclasses to msgspec.Struct for faster serialization and lower memory. Litestar encodes these natively to JSON without intermediate dicts.
  • Startup initialization uses Litestar's on_startup hook with app.state instead of module-level globals.
  • Application log level configurable via CONDA_PRESTO_LOG_LEVEL (default INFO).
  • Renamed project from conda-resolve to conda-presto (package, CLI subcommand, environment variables, Docker images).

v0.2.1

Choose a tag to compare

@jezdez jezdez released this 16 Apr 00:34
6436a64

Added

  • Separate Docker image flavors: server (latest) and CLI (cli), built from docker/server.Dockerfile and docker/cli.Dockerfile. The CLI image excludes server dependencies (uvicorn) for a smaller footprint.

v0.2.0

Choose a tag to compare

@jezdez jezdez released this 16 Apr 00:20
94f17cb

Added

  • Configuration module (config.py) with environment variable overrides for all operational settings: CONDA_PRESTO_CHANNELS, CONDA_PRESTO_PLATFORMS, CONDA_PRESTO_CONCURRENCY, CONDA_PRESTO_WORKERS, CONDA_PRESTO_MAX_BODY_BYTES, CONDA_PRESTO_HOST, CONDA_PRESTO_PORT, CONDA_PRESTO_GLIBC_VERSION, CONDA_PRESTO_LINUX_VERSION, CONDA_PRESTO_OSX_VERSION.
  • Support for .toml and .json file extensions in the HTTP API file upload endpoint.
  • Dynamic OpenAPI schema version derived from package metadata via importlib.metadata.

Changed

  • Default fallback channel changed from defaults to conda-forge in both CLI and HTTP API, configurable via CONDA_PRESTO_CHANNELS.
  • Unified HTTP API to single /resolve endpoint supporting both GET (query params) and POST (JSON body). Removed old /solve, /solve/environment-yml, and /cache/clear endpoints.
  • Request body uses specs field instead of dependencies, and file/filename fields for environment file content instead of raw YAML body.
  • POST body fields override query params when both are present.
  • Virtual package versions for cross-platform solving are now configurable via environment variables instead of hardcoded.
  • Process pool size and server host/port defaults are now configurable via environment variables.
  • Updated test suite to match the new /resolve API.

v0.1.1

Choose a tag to compare

@jezdez jezdez released this 15 Apr 23:32
08d2025

Added

  • Minimal, hardened Docker image using multi-stage build with debian:bookworm-slim and non-root user.
  • Docker release workflow publishing multi-arch images (linux/amd64, linux/arm64) to GitHub Container Registry on release and manual dispatch.
  • Dependabot configuration for Docker base image updates.
  • Automated pixi lockfile update workflow (monthly, via pixi-diff-to-markdown).
  • linux-aarch64 platform support.

Fixed

  • Default platform detection after server warmup. The warmup loop left a stale platform in context._cache_, causing the server to default to the wrong platform. Now captured once at import time as NATIVE_SUBDIR.