[devel] python-requests
Ivan Zakharyaschev
imz на altlinux.org
Пт Июл 6 13:00:12 MSK 2018
On Fri, 6 Jul 2018, Dmitry V. Levin wrote:
> On Fri, Jul 06, 2018 at 09:05:05AM +0300, Vladimir Didenko wrote:
> > Увидел, что python-requests обновился до 2.19.1, только бомба
> > по-прежнему осталось, даже несколько. Из setup.py
> >
> > requires = [
> > 'chardet>=3.0.2,<3.1.0',
> > 'idna>=2.5,<2.8',
> > 'urllib3>=1.21.1,<1.24',
> > 'certifi>=2017.4.17'
> > ]
> >
> > Предлагаю сделать одно из следующих изменений:
> >
> > 1. Поставить явные зависимости RPM с ограничениями на версию
> > (например, Requires: python-module-idna < 2.8). Спасет от мэйнтейнеров
> > chardet, idna, urllib3. Но не спасет от мэйнтейнеров, которые будут
> > обновлять python-requests вслепую, не тестируя.
> > 2. Убрать в зависимостях setup.py ограничения '<'. Я так делаю с
> > docker-compose, поскольку эти ограничения ничем не обоснованы. Спасет
> > от мэйнтейнеров chardet, idna, urllib3, а также и от обновляющих
> > python-requests. Единственный минус - не покрывается ситуация, когда
> > при обновлении одного из пакетов совместимость действительно будет
> > сломана.
> > 3. Собирать python-requests с bundled библиотеками. Спасет всех, но c
> > идеологической сторорны выглядит не очень.
> >
> > Лично я за пункт 2, но готов выслушать другие мнения.
>
> Ранее уже было озвучено предложение:
> - генерить зависимости из requires[] автоматически;
> - если requires[] кривые, то патчить.
Да, так бы я и сформулировал и своё сложившееся понимание этого вопроса.
Последнее обсуждение не попало в devel@; viy@ рассказал:
----------
> Игорь, вот помните Ваше предложение по отслеживанию с помощью
> авто-reqs/provs того, что написано в *.egginfo?
>
> Видимо, это стоит реализовать. Нет ли у Вас готовых нароботок уже?
Это реализовано в mageia, оттуда можно взять готовое решение.
Provides вида pythonegg(2)(distro) в python2-distro
Но похоже намечается новый стандарт -
В федоре и магее появились очень интересные provides вида
python2/3dist(...) с приведенным именем модуля в pypi.
python2dist(aaargh) python2-aaargh
python2dist(abclient) python2-abclient
python3dist(achoo) python3-achoo
---------
imz@: Ввод нового вида Provides/Requires будет немного
болезненнным/потербует некоторого времени для ввода: прежде, чем
использовать Requires, нужно сгенерировать Provides в других пакетах.
(Вариант отображть имя egginfo-файла в имя пакета по таблице мне кажется
не очень честным: пр перетасовке файлов или переименовании пакетов старые
Requires будут недействительными. Хотя сейчас это так делается для
некоторых видов зависимостей -- по contents_index; но это мн етоже кажется
неидеальным.)
Подумал ещё о варианте превращать это в файловые зависимости, но такое
простое решение сработает плохо, потому что egginfo-файлы могут лежать в
разных директориях у нас (по крайней мере: внтури /usr/lib или
/usr/lib64). Может быть, унификация и возможна, но это такой же
необходимый первый этап, как и генерация Provides в первом варианте.
--
Best regards,
Ivan
Подробная информация о списке рассылки Devel