uv и uv.lock в Python

Contents
Введение
Что такое 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

Related articles
uv и uv.lock
Виртуальное окружение
Python
venv
virtualenv
pyenv

Search this site

Channel @aofeed Chat @aofeedchat

Contacts and cooperation:
I recommend our hosting beget.com
Write to info@aredel.com if you:
1. Want to write an article for our site or translate an article into your native language.
2. Want to place thematically relevant ads on the site.
3. Ads on my site pass maximum censorship. If you see an ad block unsuitable for school-age children, shocking or misleading - please contact us by e-mail
4. Found a mistake, inaccuracy, bug, etc. on the site. ... .......
5. Articles can be shared on social media by clicking a network icon: