WhisperX upgrade fails with SQLAlchemy `duplicate normalized extra name`
Source: Troubleshooting reference
Symptom: uv tool upgrade --all fails while building SQLAlchemy 2.1.0,
reporting duplicate normalized extra name mssql-pymssql.
Root-cause chain: WhisperX depends indirectly on SQLAlchemy through
pyannote and Optuna. SQLAlchemy’s source metadata declares both
mssql-pymssql and the legacy alias mssql_pymssql; uv rejects this collision.
On 2026-09-24, the PyPI release initially lacked a Python 3.12 macOS ARM64
wheel, exposing the source metadata failure. Later that session, the matching
wheel became available and the same installer upgrade succeeded with SQLAlchemy
2.1.0. This bypasses the source-package defect; it does not repair its metadata.
Confirm: inspect the failing package/version and the platform wheels on the SQLAlchemy release page. The extra-name normalization specification explains why underscores and hyphens collide.
Fix: once a compatible wheel is published, retry the managed upgrade:
DF_MODE=upgrade bash ~/dotfiles/install/python.shExpected result: all tool upgrades and the installer’s entrypoint checks pass. Do not edit uv’s cached source or change the default Python solely to bypass this error. Other platforms without a compatible wheel may still encounter it.