It seems to be tied to Pydantic v2's use of compiled files which were not present in Pydantic v1. By the time the auto-update function is called, these files will have been imported in the process, locking the package and preventing it from being overwritten by the auto-update subprocess.
Checks:
- Auto-update from 0.18.2 to 0.19.1 works
- Auto-update from 0.19.0 to 0.19.1 doesn't