あなたはここで混乱したビットを見ます。スフィンクスは構文解析器ではありません。あなたのPythonコードを実行可能にして、スフィンクスがドキュメントストリングをキャッチできるようにする必要があります。そのため、拡張子ファイルの名前を ".py"に変更しても効果がありません。
最近、私はSphinxとCythonで最近仕事をしています。自分の経験を共有したいと思います... docstringsからコンパイルされたCython拡張のhtmlドキュメントを自動生成する手順は次のとおりです。
[注:私はスフィンクス1.1.3とCython 0.17.4使用]それは持つことができ、すべての制限付きで(すべての
まず、Pythonの「ドキュメンテーション文字列」を使用 - たとえばにより、あなたが記述することはできませんコンストラクタ。あなたのCythonコードで)docstrings仕様を参照してください:
cdef class PyLabNode:
"""
This is a LabNode !!!
"""
cdef LabNode* thisptr
cdef PyLabNetwork network
def __cinit__(self):
self.thisptr = new LabNode()
def __dealloc__(self):
if self.thisptr:
del self.thisptr
def SetNetwork(self, PyLabNetwork net):
"""
Set the network !!!
"""
self.network = net
そして "yourextension.so" 再コンパイルします。
次に「sphinx-quickstart」を実行し、質問に答えます。 「オートドック」を求められたら、はいと言うことを忘れないでください。これにより、 "Makefile"、 "index.rst"ファイル、 "conf.py"ファイルが生成されます。
この最後の「conf.pyは、」あなたのモジュールを見つけるためにされたスフィンクスを伝えるために編集する必要があります。
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.insert(0, os.path.abspath('.'))
sys.path.insert(0, os.path.abspath('../../parent/dir/of/yourextension/'))
「index.rst」ファイルがあるかもしれないどのモジュール伝えるためだけでなく、編集する必要があります分析した:
Contents:
.. toctree::
:maxdepth: 2
.. automodule:: yourextension
:members:
:undoc-members:
:show-inheritance:
最後に実行して、ドキュメントの構築:私のために十分だった
$ make html
を(私は ".../_ build/html /"ディレクトリにhtmlファイルの結果セットを持っています)。以前の質問から尋ねられて以来、スフィンクスとサイモンが進化しているかもしれませんが、私は対処する "署名"の問題はありませんでした。特定のCythonディレクティブを使用することも、スフィンクスに適用する修正もありません。
編集:まあ、私は私の言葉を取り戻したいと思います。私はEpydocを使っている間に "Danは"埋め込みシグネチャの問題について言及していた(これはSphinxの問題でもあると思います)という問題に遭遇しました。このコンパイラディレクティブはとにかくパイソン準拠した署名を送信しませんアクティベーション:
PyLabNode.SetNetwork(self, PyLabNetwork net)
これは2欠点があります。クラスのプレフィックスと入力されたパラメータのドット表記を。これは、両方のスフィンクスを助けることができる
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
希望:終わり
は、私が正しいものを送信するために見つけ出すことができる唯一の方法は、そのようなドキュメントの文字列の最初の行に準拠した署名を書くことでしたそしてEpydocユーザー...
EDIT:__cinit__
に関して、私は説明を倍にすることによって(スフィンクスをしようとしなかった)Epidoc
で正常にドキュメントを生成することができました、次のように:Golgauthが説明するように
# For Epydoc only (only used for docstring)
def __init__(self, sim):
"""
__init__(self, sim)
Constructor.
@param sim: The simulator this binding is attached to.
@type sim: L{PyLabSimulatorBase}
"""
# Real Cython init
def __cinit__(self, PyLabSimulatorBase sim):
self.thisptr = new LabNetBinding()
self.sites = []
simulator = sim
、paramはないコンストラクタで、クラスのドキュメントで文書化されなければならないので、それは生成されたドキュメントでよく見えます。 –