[devel] Обновление numpy и matplotlib
Ivan Zakharyaschev
imz на altlinux.org
Вс Апр 16 10:01:07 MSK 2017
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 .
>> Как я делал проверку:
>>
>> $ 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]$
--
Best regards,
Ivan
Подробная информация о списке рассылки Devel