Возможно ли получить автозаполнение джедая для библиотеки C ++, связанной с python?

Я использую 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).

Большое спасибо !

0

Решение

Вы не можете подать дополнительную документацию джедаю. Тем не менее, вы можете установить __doc__ Атрибут таким образом, что джедай понимает это. Если вы определяете сигнатуры вызовов так же, как стандартная библиотека, я думаю, это должно работать.

В качестве дополнительного примечания я должен упомянуть, что в Python 3.4+ есть еще лучший способ определения строк документации. ИМХО, это правильный способ определить это. Я не уверен, как именно это сделать (но есть способы использовать это):

>>> inspect.signature(exit)
<inspect.Signature object at 0x7f2b5a05aa58>
>>> str(inspect.signature(exit))
'(code=None)'

Джедай пока не понимает этого, но это определенно произойдет в будущем.

1

Другие решения


По вопросам рекламы [email protected]