Python Developer Tooling Handbook logo

Python Developer Tooling Handbook

Archives
Subscribe
June 8, 2026

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 commit runs 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-verify despite explicit instructions not to. This how-to layers a PreToolUse hook 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 N for 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 reads mypy.ini and 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 check as a preview command that runs ty without 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.

Don't miss what's next. Subscribe to Python Developer Tooling Handbook:
← Newer Serverless deployment guides and a type checker comparison Older → Free-threaded Python is supported in 3.14, plus PEP 810 lazy imports and 14 new handbook pages

Add a comment:

Posting this comment will subscribe you to this newsletter with the email address you enter.
Share this email:
Share on Twitter Share on LinkedIn
book
Twitter
LinkedIn
tdhopper.com
Powered by Buttondown, the easiest way to start and grow your newsletter.