Releases: jezdez/conda-presto
Releases · jezdez/conda-presto
Release list
v0.8.0
Immutable
release. Only release title and notes can be modified.
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
Immutable
release. Only release title and notes can be modified.
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
Immutable
release. Only release title and notes can be modified.
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
Immutable
release. Only release title and notes can be modified.
v0.5.0
Immutable
release. Only release title and notes can be modified.
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
Added
POST /resolvenow dispatches onContent-Type:application/json(or missing) keeps the existingResolveRequestenvelope behavior;application/yaml/application/x-yaml/text/yaml/application/toml/text/plaintreat 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 makescurl --data-binary @environment.yml -H 'Content-Type: application/yaml' '.../resolve?format=pixi-lock-v6&platform=linux-64'a one-liner — nojqor JSON wrapping required.- HTTP API
?format=<name>query parameter onGET/POST /resolveroutes the response through conda's exporter plugin registry. The CLI (--format) and HTTP API share the samerender_envshelper 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.1is now a base dependency, soconda-lock-v1andrattler-lock-v6/pixi-lock-v6are available out of the box from both CLI and HTTP API.- Windows virtual package override via
CONDA_PRESTO_WIN_VERSION(default0) so cross-platformwin-*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), andCONDA_PRESTO_SOLVE_TIMEOUT_S(default 60s, returns 504). - Process pool is shut down cleanly via Litestar's
on_shutdownhook.
Changed
- HTTP API now returns
SolveResult/ResolvedPackagemsgspec.Structinstances directly; Litestar encodes them natively to JSON without an intermediateto_dict()conversion. - CLI default output is now produced by
msgspec.json.encodeon the samelist[SolveResult]the HTTP API returns, pretty-printed viamsgspec.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_intandenv_listhelpers: list values now strip whitespace and drop empty parts, and numeric values fail with a clear startup error instead of a rawValueErrorfromint().
Removed
resolve-jsonconda exporter plugin and theconda_environment_exportershook entry. It duplicated theSolveResult/ResolvedPackagemsgspec 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-jsonreturns 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_dictandSolveResult.to_dictmethods: no longer called anywhere; msgspec serializes the structs directly.
Fixed
- HTTP
Content-Typeon?format=responses is now derived from the exporter'sdefault_filenamesrather than a hand-coded format-name table. YAML-ish formats (environment-yaml,conda-lock-v1,rattler-lock-v6/pixi-lock-v6) are now served asapplication/yamlinstead oftext/plain. - Tempfile lifetime bug in
parse_file_content:specsandchannelsare 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-memoryRattlerIndexHelpercache (no TTL, process-lifetime) are now described separately.
v0.3.0
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 viaCONDA_PRESTO_RATE_LIMIT, default 300 req/min,0to 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 viaCONDA_PRESTO_MAX_BODY_BYTES, default 1 MB).
Changed
- Migrated HTTP API framework from Starlette to Litestar. Typed request validation via
ResolveRequestdataclass replaces manual JSON parsing. - Migrated
ResolvedPackageandSolveResultfromdataclassestomsgspec.Structfor faster serialization and lower memory. Litestar encodes these natively to JSON without intermediate dicts. - Startup initialization uses Litestar's
on_startuphook withapp.stateinstead of module-level globals. - Application log level configurable via
CONDA_PRESTO_LOG_LEVEL(defaultINFO). - Renamed project from
conda-resolvetoconda-presto(package, CLI subcommand, environment variables, Docker images).
v0.2.1
v0.2.0
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
.tomland.jsonfile 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
defaultstoconda-forgein both CLI and HTTP API, configurable viaCONDA_PRESTO_CHANNELS. - Unified HTTP API to single
/resolveendpoint supporting both GET (query params) and POST (JSON body). Removed old/solve,/solve/environment-yml, and/cache/clearendpoints. - Request body uses
specsfield instead ofdependencies, andfile/filenamefields 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
/resolveAPI.
v0.1.1
Added
- Minimal, hardened Docker image using multi-stage build with
debian:bookworm-slimand 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-aarch64platform 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 asNATIVE_SUBDIR.