uv и uv.lock в Python
| Введение | |
| Что такое uv.lock | |
| Что изменилось | |
| Новые пакеты | |
| Как повторить проверку | |
| Почему это безопасно | |
| Похожие статьи |
Введение
В репозитории изменился только один файл - uv.lock: около 119 добавленных строк и ни одной удалённой. Это догоняющее обновление lock-файла: манифест проекта уже требовал пакет для браузерных тестов (playwright >= 1.40), а lock-файл до этого изменения его ещё не фиксировал. Ниже разберём, что именно добавилось и почему.
Что такое uv.lock
uv.lock - это сгенерированный файл точных версий зависимостей. Манифест проекта задаёт широкие ограничения вида playwright >= 1.40, а lock-файл фиксирует конкретные версии, хеши и адреса колёс для всех платформ. Благодаря этому установка на другой машине даёт тот же набор пакетов, что и у автора изменения. Правило простое: манифест описывает что нужно, lock-файл - что именно установлено.
Что изменилось
Изменение полностью аддитивное, три части:
1. В секции зависимостей проекта появилась запись
playwright, а в метаданных -
ограничение playwright >= 1.40.
2. Добавлены три новые секции пакетов:
playwright 1.63.0,
greenlet 3.5.6 и
pyee 13.0.1.
3. Для каждого пакета зафиксированы источник
(реестр пакетов), точная версия, хеши и список колёс
под разные ОС и архитектуры.
Удалений и смен версий существующих пакетов нет.
Новые пакеты
playwright 1.63.0 - автоматизация браузера
(используется тестами интерфейса со словарными страницами).
В lock-файле у него две зависимости:
greenlet и pyee.
greenlet 3.5.6 - примитив лёгких корутин,
который playwright использует внутри себя.
Это самый объёмный кусок изменения:
у пакета много колёс под разные версии Python,
ОС и архитектуры, поэтому он занимает большую часть
добавленных строк.
pyee 13.0.1 - реализация событийного эмиттера.
Его единственная зависимость -
typing-extensions, который уже был в lock-файле,
поэтому отдельно ничего для него не добавилось.
Как повторить проверку
Посмотреть сводку изменения:
git diff --stat
Посмотреть только имена новых пакетов:
git diff -- container/uv.lock | grep "^+name"
Перегенерировать lock-файл после правки манифеста:
uv lock
Проверить, что окружение собирается:
uv sync
Все пути выше условные: репозиторий может лежать в любом каталоге, например
~/projects/demo
Почему это безопасно
Изменение только добавляет пины, ничего не удаляет и не меняет версии уже используемых пакетов (pytest, requests и остальные остались как были). Значит, существующие тесты и проверки не могут сломаться из-за смены версий: для них набор зависимостей тот же. Единственный новый эффект - теперь воспроизводимо устанавливается инструмент браузерных тестов вместе со своими транзитивными зависимостями.
Article author: Andrei Olegovich
| uv и uv.lock | |
| Виртуальное окружение | |
| Python | |
| venv | |
| virtualenv | |
| pyenv |