Напомню контекст: packaging — библиотека для работы с версиями и зависимостями. Встроена в pip, а pip — в Python. 650+ миллионов скачиваний в месяц.
➡️ Что в релизе
Обещанные оптимизации: регулярки больше не перекомпилируются каждый раз, добавлены
__slots__ для Version и Specifier, улучшено кэширование. Результат — парсинг версий стал в три раза быстрее, количество создаваемых объектов в pip упало с 4,8 млн до 400 тыс.➡️ Новые фичи
PEP 751 — поддержка pylock-файлов для воспроизводимых установок. PEP 794 — импорт метаданных имён пакетов. Positional pattern matching для
Version и Specifier — теперь работает match version:from packaging.version import Version
match Version("3.14.0"):
case Version(major=3, minor=14):
print("Python 3.14!")
➡️ Breaking changes
.contains() теперь возвращает False вместо исключения для невалидных версий. Если ловили InvalidVersion — проверьте код.Обновление подтянется автоматически с новыми версиями pip.
📎 Changelog, PyPI
@zen_of_python