---
title: "sqlite-utils 4.2.1 Released: Fixes Crash and Adds Isolated Smoke Test with uv"
source: "Simon Willison 博客（Atom）"
source_tier: "t2"
url: "https://simonwillison.net/2026/Aug/13/sqlite-utils-2/"
permalink: "https://feed.astralor.com/items/itm_74e6275e4773b7fc1066be69"
published: "2026-08-13T23:53:47.000Z"
score: 68
channel: "tech"
tags: ["Python","sqlite-utils","uv","Packaging & Dependency Management"]
---

# sqlite-utils 4.2.1 Released: Fixes Crash and Adds Isolated Smoke Test with uv

## AI commentary

> Worth reading not because of the 4.2.1 fix itself, but for the handy uv isolated-run technique Simon shares. If you maintain Python CLI tools or publish packages, this 'simulate a clean user environment' mindset can help you catch dependencies issues that are hidden by your dev environment.

## At a glance

sqlite-utils 4.2.1 fixes a crashing bug introduced in 4.2. The previous release used typing_extensions.Self, but typing-extensions was not declared as a project dependency; it was only present through the dev dependency group, so running directly via uvx failed. Alongside the fix, Simon Willison documents a uv-based smoke test approach: using 'uv run --isolated --no-default-groups' to verify the CLI works without dev dependencies. This is a practical tip for Python packaging and dependency hygiene, showing how to catch missing-dependency issues before release.

## Key points

- sqlite-utils 4.2.1 fixes a crash caused by typing-extensions not being declared as a dependency in 4.2.
- Adds a uv smoke test command: uv run --isolated --no-default-groups sqlite-utils --help.
- --isolated ignores any .venv dependencies, and --no-default-groups avoids installing the default dev group, simulating a clean user environment.
- This highlights that packages in dev dependency groups may not be present when users run your tool directly.

## Full text

Release: sqlite-utils 4.2.1 Fixes a crashing bug in sqlite-utils 4.2. I'd introduced code that looks like this: from typing_extensions import Self It turned out the typing-extensions package was not listed as a dependency for sqlite-utils - it was installed by one of the other dependencies in the dev dependency group, but when you uvx sqlite-utils directly you don't get those dependencies. As part of fixing this I figured out how to run a smoke test to ensure the CLI tool still works even without those dev dependencies, which can be run from the project checkout: uv run --isolated --no-default-groups sqlite-utils --help The --no-default-groups argument prevents it from installing that default dev group, and --isolated means that even if there is a .venv/ folder containing extra dependencies they will be ignored for the duration of that uv run command. Tags: packaging, python, sqlite-utils, uv

---

Verify against the original before citing; curated by Astral Feed: https://feed.astralor.com/items/itm_74e6275e4773b7fc1066be69
