여기서 혼란스러워 보이는 부분이 있습니다. 스핑크스는 실제로 구문 분석기가 아닙니다. 스핑크스가 문서 문자열을 잡을 수있게하려면 Python 코드를 실행 가능하게 만들어야합니다. 이것이 확장 파일의 이름을 ".py"로 바꾸는 것이 도움이되지 않는 이유입니다.
글쎄, 최근에 스핑크스와 Cython으로 일해 왔고 내 경험을 공유하고 싶습니다 ... 다음은 docstrings에서 주어진 컴파일 된 Cython 확장에 대한 HTML 문서의 자동화 된 생성을 얻는 전체 절차입니다 :
[참고 : 나는 스핑크스 1.1.3와 사이 썬 0.17.4 사용]이 가질 수있는 모든 제한 사항 (모든
첫째, 파이썬의 "문서화 문자열"를 사용 - 예에 의해, 당신은 설명 할 수없는 생성자.
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"다시 컴파일 : 당신의 사이 썬 코드에 docstrings 사양)를 참조하십시오.
그런 다음 "sphinx-quickstart"를 실행하고 질문에 답하십시오. "autodoc"을 묻는 질문에 yes라고 대답하는 것을 잊지 마십시오. 이렇게하면 "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"파일이 될 수있는 모듈을 말할뿐만 아니라 편집 할 수있다 분석 :
$ make html
것은 나를 위해 충분했다 그 :
Contents:
.. toctree::
:maxdepth: 2
.. automodule:: yourextension
:members:
:undoc-members:
:show-inheritance:
마지막으로 수행하여 문서를 구축 (".../_ build/html /"디렉토리에 html 파일의 결과 세트가 있습니다.) 이전 질문에서 스핑크스와 싸이언이 진화 해 왔을 지 모르지만 나는 처리 할 "서명"문제가 없었습니다. 특정 Cython 지시문을 사용하거나 스핑크스에 적용 할 수정 사항이 없습니다 ...
희망이 도움이됩니다.
편집 : 음, 내 말을 되찾고 싶습니다. Epydoc을 사용하는 동안 "댄"이 "embedsignature"문제에 관해 언급 한 문제가 발생했습니다 (이 문제는 스핑크스와 관련된 문제이기도합니다). 이 컴파일러 지시문 어쨌든 파이썬을 준수 서명을 보내지 않습니다 활성화 :
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 사용자 ... :, 나는 Epidoc
에 성공적으로 문서를 생성 할 수 __cinit__
했다 관련된 (스핑크스와 시도하지 않았다)에 대한 설명을 두배로 이 같은 :
이 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가없는 생성자, 클래스 문서에 문서화되어야한다, 그래서 그것은 생성 된 문서에서 잘 보일 것입니다. –