Ответ 1
Где я могу найти инструкции о том, как указать цели для
:ref:
и:term:
вnumpy
,scipy
иmatplotlib
?
У меня есть Gist с горсткой отображений intersphinx
, которая теперь включает в себя все numpy
, scipy
и matplotlib
. Вы можете использовать эти записи непосредственно в intersphinx_mapping
в своем conf.py
. Если у кого есть предложения по добавлению новых записей в этот список, пожалуйста, не стесняйтесь отправлять запросы в комментарии Gist.
Для всех этих пакетов, за ответ fgoudra Я настоятельно рекомендую использовать sphobjinv
для декодирования и проверки синтаксиса файла objects.inv
для каждой библиотеки. (Полное раскрытие: я являюсь автором sphobjinv
.) Каждая строка (декодированная) objects.inv
предоставляет вам всю информацию, необходимую для создания рабочей ссылки intersphinx
; см. документацию sphobjinv
здесь.
numpy
сложно. Иногда вам требуется полное имя, например:
:func:`numpy.cross`
В других случаях (например, для функций C) вы можете просто ссылаться на базовое имя функции, но вы должны явно указать домен, например:
:c:func:`PyArray_InnerProduct`
Однако иногда вам может потребоваться ссылка на пользовательский домен np
, например:
:np:func:`numpy.ma.append`
На самом деле нет способа узнать, что такое правильный синтаксис, не посоветовавшись с objects.inv
.
scipy
примерно такой же непостижимой, как numpy
.. Все это осложняется введением многочисленных пользовательских доменов для различных подпакетов scipy
, например:
:scipy-optimize:func:`scipy.integrate.newton_cotes`
Для matplotlib
, вам всегда нужно указать (довольно многословное) полностью заданное имя объекта в ссылке, например:
:meth:`matplotlib.axes.Axes.plot`
Все объекты кода matplotlib
, похоже, находятся в домене py
по умолчанию, что несколько упрощает.
Для любого из них, если у вас возникли проблемы с получением ссылки для правильной сборки, первое, на что я вернусь, - это использовать родовую роль :obj:
, например:
:obj:`matplotlib.axes.Axes.plot`
Это построит ссылку intersphinx
, независимо от роли, в которой был определен конкретный объект, хотя, я думаю, вам все равно нужно правильно указать любой соответствующий домен, отличный от стандартного. Если ссылка не работает должным образом с ролью :obj:
, то там где-то есть ошибка в имени объекта или в домене. Проверьте наличие опечаток в обоих местах.