Я использую vim с jedi-vim для редактирования кода на Python. Однако некоторые библиотеки, которые мы используем, являются разделяемыми библиотеками C ++, для которых мы генерировали привязки python с использованием pybindgen. При использовании jedi-vim я не получаю подпись ни для одного из классов и методов, просто перечисляю их.
Например, в этой библиотеке https://github.com/jorisv/SpaceVecAlg если я установлю библиотеку и импортирую ее:
import spacevecalg as sva
Затем, sva.
правильно покажет все функции и классы первого порядка. Однако, если я выберу первый, sva.ABInertia(
Джедай не предложит мне ни одного из конструкторов классов.
Я предполагаю, что мне нужно каким-то образом экспортировать определения классов в своего рода документацию на Python, и я решил, что для этого могу использовать аннотации doxygen, но я не знаю, как передать эту дополнительную документацию в jedi (или любой другой механизм завершения, например как тот, который построен в IPython).
Большое спасибо !
Вы не можете подать дополнительную документацию джедаю. Тем не менее, вы можете установить __doc__
Атрибут таким образом, что джедай понимает это. Если вы определяете сигнатуры вызовов так же, как стандартная библиотека, я думаю, это должно работать.
В качестве дополнительного примечания я должен упомянуть, что в Python 3.4+ есть еще лучший способ определения строк документации. ИМХО, это правильный способ определить это. Я не уверен, как именно это сделать (но есть способы использовать это):
>>> inspect.signature(exit)
<inspect.Signature object at 0x7f2b5a05aa58>
>>> str(inspect.signature(exit))
'(code=None)'
Джедай пока не понимает этого, но это определенно произойдет в будущем.