Skip to content

v1.3.0: pixi Advisory & Migration, Explain, JSON Output, Release Integrity

Choose a tag to compare

@github-actions github-actions released this 29 Oct 16:16
· 117 commits to main since this release
v1.3.0
9c3d6b2

✨ What's New

PyPilot 1.3.0 recommends pixi when pip and uv hit a wall they cannot climb, moves a project to pixi on request, explains every verdict in detail, and makes every command scriptable. Releases are now verifiable end to end.

📖 New documentation site: https://pypilot-dev.github.io/pypilot/

🧪 pixi: from supported to recommended

  • "pixi can help here": in a pip or uv project, PyPilot recognises problems conda-forge solves and pip cannot: a package with no wheel for your platform that needs native libraries (GDAL, PROJ, GEOS…), a build that failed on a missing header such as gdal.h, CUDA sources without nvcc, a repo mixing Python with R, Rust or C++. It suggests pixi; it never converts on its own.
  • pypilot migrate-to-pixi: previews a separate pixi.toml (conda-forge where available, PyPI otherwise, the Python your dependencies need), writes it with --write, installs with --install. It never touches pyproject.toml, requirements.txt or environment.yml. Also migrate-conda --to pixi, install-pixi and package_manager = "pixi"; in Zed and VS Code, "Initialize pixi project" asks before writing anything.
  • pixi doctor: every environment with its Python and drift between them, a chosen environment (pixi_environment, --pixi-env), a read-only stale-pixi.lock check, and PyPI dependencies with no wheel for a platform the manifest declares.

🔍 Explanations

  • pypilot explain [package]: the resolution table behind a verdict, requires_python against the wheels per platform and which one limits the range; for a project, what blocks each Python ("3.13 is blocked by mediapipe 0.10.14, wheels end at cp312").
  • pypilot check names the project dependency a package conflicts with and suggests a conda-forge build when it fails.

🤖 Scriptable and previewable

  • --json on every command ({ "pypilot", "command", "ok", … }), --markdown on doctor and check.
  • --dry-run on setup, install, fix python, fix cuda and the new doctor --fix: the exact commands and files, generated by the code path that runs for real.
  • pypilot logs (a local, rotating, redacted log), pypilot completions for bash, zsh, fish and PowerShell, update-data --check, pypilot version.

🧭 Editors

  • Workspace diagnostics: diagnostics_scope = "workspace" checks every Python file and notebook, not only open ones.
  • Editor settings now reach the engine; before, VS Code's pypilot.* settings had no effect on the server. Precedence: global file < editor < project file.
  • Other editors: a documented protocol with Neovim, Helix and Emacs setups (helper/src/lsp/PROTOCOL.md).

🐛 Fixes

  • Wheel resolution: a patch-level requires-python such as >=3.8.1 no longer drops the whole 3.8 line; 64-bit Windows no longer counts 32-bit win32 wheels; free-threaded cp3XXt wheels no longer count for the regular build; manylinux and musllinux wheels are kept apart. Now tested on Windows, macOS and Linux (glibc and musl, x64 and arm64).
  • Offline: PyPilot no longer calls every package it could not look up a typo. The editor stays quiet for those imports, and doctor lists them as "not checked".
  • After a migration, doctor no longer warns that conda-forge packages will compile from source.

🔐 Release integrity

  • Every release ships SHA256SUMS, build-provenance attestations (gh attestation verify) and a CycloneDX SBOM; builds use --locked, and cargo-deny runs in CI. Dependencies were updated for advisories in rustls, tokio and zip.

📦 Installation

Via Zed (recommended): Install the PyPilot extension from the Zed extension registry

Via VS Code: PyPilot for VS Code

Via pip:

pip install --upgrade pypilot-cli

Verify a download:

sha256sum -c SHA256SUMS --ignore-missing
gh attestation verify pypilot-linux-x64.tar.gz -R pypilot-dev/pypilot

Full Changelog: v1.2.2...v1.3.0