[devel] Обновление numpy и matplotlib
Антон Мидюков
midyukov-anton на ya.ru
Вс Апр 16 10:48:12 MSK 2017
16.04.2017 14:01, Ivan Zakharyaschev пишет:
>
> On Sun, 16 Apr 2017, Антон Мидюков wrote:
>
>> 14.04.2017 17:00, Ivan Zakharyaschev пишет:
>>> Здравствуйте!
>>>
>>> On Thu, 13 Apr 2017, Антон Мидюков wrote:
>>>
>>> > В задании 181544 обновил пакеты python-module-numpy и >
>>> python-module-matplotlib до актуальных версий. В пакетах были
>>> косяки, > которые постарался исправить. matplotlib был не
>>> доупакован, из-за этого > у меня не запускался Beremiz - свободный
>>> софт для программирования ПЛК. > Ну, а раз взялся чинить заодно и
>>> обновил :-) Надеюсь никому ничего этим > заданием не сломаю. Раньше
>>> среды отправлять в Сизиф не буду. Так что > пока жду замечания и
>>> предложения.
>>>
>>> Я озвучивал пожелание (в связи с проверкой, которую хочется внести и в
>>> policy) --
>>> https://lists.altlinux.org/pipermail/devel/2017-April/202544.html .
>
>>> [builder на localhost .in]$ python3 -c 'import matplotlib.tri'
>>> Traceback (most recent call last):
>>> File "<string>", line 1, in <module>
>>> File "/usr/lib64/python3/site-packages/matplotlib/tri/__init__.py",
>>> line 10, in <module>
>>> from .tricontour import *
>>> File
>>> "/usr/lib64/python3/site-packages/matplotlib/tri/tricontour.py",
>>> line 6, in <module>
>>> from matplotlib.contour import ContourSet
>>> File "/usr/lib64/python3/site-packages/matplotlib/contour.py",
>>> line 23,
>>> in <module>
>>> import matplotlib.text as text
>>> File "/usr/lib64/python3/site-packages/matplotlib/text.py", line
>>> 33, in
>>> <module>
>>> from matplotlib.backend_bases import RendererBase
>>> File "/usr/lib64/python3/site-packages/matplotlib/backend_bases.py",
>>> line 63, in <module>
>>> import matplotlib.textpath as textpath
>>> File "/usr/lib64/python3/site-packages/matplotlib/textpath.py",
>>> line 20,
>>> in <module>
>>> from matplotlib.mathtext import MathTextParser
>>> File "/usr/lib64/python3/site-packages/matplotlib/mathtext.py",
>>> line 23,
>>> in <module>
>>> from six import chr
>>> ImportError: cannot import name 'chr'
>>> [builder на localhost .in]$
>> ImportError: cannot import name 'chr' у меня воспроизвелась. В
>> исходнике /usr/lib64/python3/site-packages/matplotlib/mathtext.py 23
>> строчка выглядит так:
>> from six import unichr
>> А в итоговом python3-module:
>> from six import chr
>> А виноват в этом скрипт конвертации исходников на python2 в python3 в
>> спеке:
>> find ./ -type f -name '*.py' -exec 2to3 -w -n '{}' + ||:
>> Получается, надо либо отключать эту строку в спеке, либо вводить
>> такую же строчку в спеке python-module-six. Как мне кажется, первое
>> решение правильное, так как в других дистрах скрипты пакета
>> matplotlib не конвертируют.
>
> Да, не применять больше 2to3 -- конечно, желательное решение. Скорее
> всего, большинство проектов уже в upstream адаптировались к Python3 и
> 2to3 ненужное насилие над их кодом.
>
> А применять его к six было бы совсем странно, потому что six -- это
> специальный API для совместимости между разными версиями, насколько я
> понял, и, возможно, для удобства программирования. Там и так всё уже
> должно быть предусмотрено в коде.
>
>> Спасибо, что обратили на эту проблему моё внимание, проверю все
>> провайдесы пакетов в задании.
>>
>> Но у меня есть вопрос по пакету python-module-six. Alexey Shabalin
>> уже добавлял этому пакеты провайдесы. Я обнаружил, что добавил он не
>> все провайдесы, которые предоставляет этот пакет, и соответственно их
>> добавил.
>
> Да, это только пойдёт пакету и репозиторию Sisyphus на пользу. (Но
> после добавления Provides нужно себя автоматически проверять на
> импортируемость их таким образом, как в моём скрипте.)
>
>> Так вот, у меня вопрос, почему эти провайдесы у пакета не находятся?
>> Я так понял, только потому, что все эти python субмодули
>> предоставляются одним файлом six.py. Все эти субмодули объявляются
>> внутри этого скрипта. Т.е. скрипт поиска провайдесов такого рода
>> провайдесы не приспособлен находить?
>
> Именно так, да. При желании можно написать автоматический генератор
> Provides специально для six. В каком-то смысле, это удобнее, чем
> выписывать их вручную, но в это надо вложить свой труд, и неизвестно,
> сколько времени это займёт. Это только приветствуется. Тут я бы ещё
> обратил внимание на то, что аналогичные Provides как-то должны ещё
> появляться в пакете с matplotlib, можно было бы покрыть и эти случаи
> автоматическим генератором тоже:
>
> matplotlib.externals.six.moves
> matplotlib.externals.six.moves.urllib.parse
> matplotlib.externals.six.moves.urllib.request
>
Я не нашёл, какие пакеты зависят от этих провайдесов, потому собрал без
них сегодня. И эти модули к тому же не импортируются никак, по крайней
мере в новой версии. Я думаю, что они уже устарели. Если это не так,
поправьте.
> А ещё потом можно будет отправить на повторную сборку обновлённые
> пакеты, которым их не хватило --
> https://www.altlinux.org/Python3/UNMETS#six..2A_.2814.29 .
>
Ужас. Получается весь этот six состоит из одних провайдесов. Мне
кажется, проще переделать скрипт поиска зависимостей, чтобы зависимости
типа python3(six.чего-то_там) преобразовывались в зависимость на
провайдес python3(six). Или есть прецеденты, когда зависимости вида
python3(six.чего-то_там) принадлежали не пакету python3-module-six?
>>> Как я делал проверку:
>>>
>>> $ apt-repo --hsh-apt-config=/home/imz/.hasher/sisyphus/apt.conf
>>> rpm [alt] file:/ALT/Sisyphus x86_64 classic
>>> rpm [alt] file:/ALT/Sisyphus noarch classic
>>> rpm http://git.altlinux.org repo/181255/x86_64 task
>>> $ apt-repo --hsh-apt-config=/home/imz/.hasher/sisyphus/apt.conf test
>>> 181544 rpm-build-python3 python3-module-matplotlib
>>>
>>> $ hsh-shell --mount=/proc,/dev/pts
>>> [builder на localhost .in]$ rpm -q python3-module-matplotlib --lastchange
>>> * Wed Apr 12 2017 Anton Midyukov <antohami на altlinux.org> 2.0.0-alt1
>>> - New version 2.0.0
>>> [builder на localhost .in]$
>>> /usr/lib/rpm/check-python3-provs-importable.sh
>>> python3-module-matplotlib; echo $?
>>> backend_agg
>>> backend_cairo
>>> matplotlib.externals.six.moves
>>> matplotlib.externals.six.moves.urllib.parse
>>> matplotlib.externals.six.moves.urllib.request
>>> matplotlib.axes
>>> matplotlib.axes._axes
>>> matplotlib.axes._base
>>> matplotlib.axes._subplots
>>> matplotlib.axis
>>> matplotlib.backend_bases
>>> matplotlib.backends.backend_agg
>>> matplotlib.backends.backend_cairo
>>> matplotlib.backends.backend_mixed
>>> matplotlib.backends.backend_nbagg
>>> matplotlib.backends.backend_pdf
>>> matplotlib.backends.backend_pgf
>>> matplotlib.backends.backend_ps
>>> matplotlib.backends.backend_svg
>>> matplotlib.backends.backend_template
>>> matplotlib.backends.backend_webagg
>>> matplotlib.backends.backend_webagg_core
>>> matplotlib.colorbar
>>> matplotlib.contour
>>> matplotlib.figure
>>> matplotlib.legend
>>> matplotlib.mathtext
>>> matplotlib.offsetbox
>>> matplotlib.patheffects
>>> matplotlib.projections
>>> matplotlib.projections.geo
>>> matplotlib.projections.polar
>>> matplotlib.pylab
>>> matplotlib.pyplot
>>> matplotlib.quiver
>>> matplotlib.table
>>> matplotlib.text
>>> matplotlib.textpath
>>> matplotlib.tri
>>> matplotlib.tri.triangulation
>>> matplotlib.tri.tricontour
>>> matplotlib.tri.trifinder
>>> matplotlib.tri.triinterpolate
>>> matplotlib.tri.tripcolor
>>> matplotlib.tri.triplot
>>> matplotlib.tri.trirefine
>>> matplotlib.tri.tritools
>>> matplotlib.type1font
>>> pylab
>>> 123
>>> [builder на localhost .in]$
>
>
>
> _______________________________________________
> Devel mailing list
> Devel на lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel
--
С уважением Антон Мидюков <antohami на altlinux.org>
Подробная информация о списке рассылки Devel