cython を と一緒に使用すると-Xembedsignature=True
、次の形式で docstring に署名が生成される場合があります。
| mymethod(...)
| MyCythonModule.mymethod(self, param1, MyCythonType param2, param3=None) -> SomeResultType
autodoc 拡張機能を使用してこのための Sphinx ドキュメントを生成すると、次のような出力が得られます。
mymethod(self, param1, MyCythonType param2, param3=None) → SomeResultType
問題は、MyCythonType も SomeResultType も HTML ドキュメント内のハイパーリンクではないことです。
Sphinx は、ドキュメンテーション開発者が「autodoc-process-signature」イベントにフックする可能性を提供します。これにより、その場で署名を操作できます。(signature, return_annotation)
メソッドはタプルを返す必要があります。return_annotation の結果を変更して `SomeResultType` や :class:SomeResultType などを挿入する場合、単純にフォーマットされず、リンクなしで、文字列に追加/先頭に追加されたものがそのまま HTML ドキュメントに表示されます。
Pythonにはそのようなものがないため、型付きパラメーターを無視する必要があるかもしれないことがわかりますが、戻り値の型のクラスドキュメントへのハイパーリンクを取得することは可能でなければなりませんが、アイデアがありません.
小さなテストケースを書いた後、これは Cython だけでなく Python にも影響するようです:
class Foo(object):
def __init__(self):
pass
def get_bar(self):
"""
get_bar(self) -> Bar <- here you see 'Bar', it will not
become a hyperlink, not even if
enclosed in ``
Get `Bar` from foo <- here you see Bar again, it will
become a hyperlink
:returns: the bar
"""
return Bar()
class Bar(object):
def __init__(self):
pass