Как заставить параметры epydoc показывать в прототипе функции?
Использование epydoc, версия 3.0.1.
Я попробовал эту простую вещь:
def SetNetwork(self, PyLabNetwork net):
"""
Set the net !!!
@param self: How long they should think.
@type self: C{int} or L{PyLabNetwork}
@param net: How long they should think.
@type net: C{int} or L{PyLabNetwork}
"""
self.network = net
Побежал это:
epydoc -v -o ./html --name epydoc --css white --docformat epytext cyelp
Но в html, создаваемом epydoc, прототип методов по-прежнему отображается с 3 последовательными точками вместо описанных параметров:
SetNetwork(...) << ??? NOTHING INSIDE ???
Set the net !!!
Parameters:
self (int or PyLabNetwork) - How long they should think.
net (int or PyLabNetwork) - How long they should think.
Любая идея? большое спасибо
РЕДАКТИРОВАТЬ: Извините, я только что протестировал простой скрипт, который отлично работает. Предыдущий случай не работал, потому что это общий объект (.so), скомпилированный с Cython. Это имеет значение. Источник также не может быть отображен. Я думал, что epydoc работает только над строками документации, в том что касается разбора прототипа функций, но это выглядит немного сложнее, чем это...
РЕДАКТИРОВАТЬ 2: Более того, если я скомпилирую, передав директиву компиляции "embedsignature" в "True", я получу что-то, что все еще неправильно, но я лучше понимаю это явление:
SetNetwork(...)
PyLabNode.SetNetwork(self, PyLabNetwork net)
Set the net !!!
Parameters:
self (int or PyLabNetwork) - How long they should think.
net (int or PyLabNetwork) - How long they should think.
Ака: epydoc не понимает цитонизированные подписи так, как они встроены...
Если у вас есть более конкретные объяснения, я все еще ваш мужчина. Спасибо
1 ответ
Понял.
Я удалил директиву компиляции Cython, которая отправляла подписи, которые epydoc не мог понять, например:
PyLabNode.SetNetwork(self, PyLabNetwork net)
Это имеет два недостатка: пунктирная запись префикса класса и типизированного параметра.
И заменил его на правильно сформированный питон в качестве самой первой строки строки документа, давая:
def SetNetwork(self, PyLabNetwork net):
"""
SetNetwork(self, net)
Set the net !!!
@param self: Handler to this.
@type self: L{PyLabNode}
@param net: The network this node belongs to.
@type net: L{PyLabNetwork}
"""
self.network = net
Это добилось цели. Надеюсь, что это может помочь некоторым людям.