uv 0.11.18 previews uv check, mypy 2.0 adds parallelism, plus a complete-stack tutorial
New on the handbook
Set up a complete Python project with uv, Ruff, ty, pytest, and pre-commit. Builds a small task tracker from scratch, layering in each tool one at a time. By the end, a single
git commitruns Ruff, ty, and pytest automatically via pre-commit. A good starting point for anyone who wants the full modern stack in one place.How to stop AI agents from bypassing pre-commit hooks. Claude Code's issue tracker documents cases where the agent runs
git commit --no-verifydespite explicit instructions not to. This how-to layers aPreToolUsehook that parses every Bash call and rejects--no-verify, alongside CLAUDE.md rules and a PATH shim, so enforcement does not rely on the model following guidance.How to configure Zed for a uv project and How to configure Helix for a uv project. Two new guides for developers using editors outside the VS Code family, covering virtual environment detection, Ruff formatting, and type-checker integration for both.
How to configure VS Code for type checking in a uv project. Covers the ty extension and mypy extension side by side: when each makes sense, how they interact with Pylance, and how to point them at a uv-managed virtual environment.
From the blog
mypy 2.0 picks parallelism over a rewrite. Released May 6, mypy 2.0 adds
--num-workers Nfor multi-core type checking. The release reports up to 5x faster checks with 8 workers on large codebases. Three flag defaults changed on upgrade:--local-partial-types,--strict-bytes, and--allow-redefinition.If you're on mypy in 2026, Pyrefly is the obvious upgrade. Pyrefly 1.0 (May 12) ships
pyrefly init, which readsmypy.iniand writes a Pyrefly config. Baseline files keep CI green while you triage what tighter inference surfaces.Blanket 1.0: an early look at deterministic threading tests. Larry Hastings released Blanket around his PyCon 2026 talk. It puts the Python thread scheduler under test control so that race conditions reproducibly fire on demand rather than appearing once in a hundred runs.
In the ecosystem
uv 0.11.18 (June 1) adds
uv checkas a preview command that runstywithout a separate install. Release notes.ty 0.0.44 (June 5) adds hover-on-type-alias in the LSP server, so editors now show the resolved definition when hovering over a type alias name. Release notes.
One thing worth trying
If you're on uv 0.11.18 or later, run:
uv check .
This invokes ty as a preview subcommand, type-checking all Python files from the current directory without installing ty separately. Run uv self update to pick up the latest version first.
Python Developer Tooling Handbook
This handbook is free, independent, and ad-free. If it saves you time, sponsor it on GitHub.
Reply to this email; I read every response.
Add a comment: