Фотография
нажмите — покажем
нажмите — покажем
Снова про транзитивные зависимости. В этот раз без троянов 😇
Сегодня, собирая проект на litestar, столкнулся с тем, что отсутствует зависимость sniffio — небольшая библиотека, которая определяет, в каком асинхронном окружении (asyncio, trio, curio, ...) запущен код.
ASGI-фреймворк litestar, хоть и не указывал sniffio как зависимость, всё равно её импортировал и использовал, ведь она является зависимостью у anyio, прямой зависимости для litestar.
Что может пойти не так?
Вчера (29 ноября) библиотека anyio в версии 4.12 убрала sniffio из зависимостей. Из занятного — у них есть деплой через GitHub, и у них упали часть тестов на 4.12, что не помешало им задеплоиться (ситуация на скриншоте ниже).
При этом в прошлом релизе от 25 сентября все тесты прошли нормально, то есть мейнтейнеры anyio решили забить, что теперь часть зависящих проектов валятся с ошибкой. Сильная аура, мне б такую 💪
Всё это привело к тому, что проекты на litestar перестали собираться 🤪
Мораль сего, казалось бы очевидного, сюра, такова:
🟢Фиксируйте в проектах все зависимости, которые намереваетесь использовать. Не используйте явным образом транзитивные зависимости.
Даже большие проекты тут ошибаются.
Если можете позволить себе такую роскошь, как фриз всех зависимостей проекта — лучше делайте)
#pypi #python
@disasm_me_ch
1.6K ·