2017-12-20 2 views
0

이 매우 복잡한 문제에 대한 해결책을 찾고 싶습니다.autodoc : 기본 클래스가 가져 오기를 존중하는 대신 전체 이름으로 표시됩니다.

내 프로젝트를 문서화하기 위해 스핑크스와 intersphinx를 사용합니다.

mongoengine.Document에서 상속받은 클래스가 있습니다.

sphinx-apidoc과 sphinx-build (sphinx-quickstart에 의해 자동 생성 된 Makefile을 통해)를 사용하여 sphinx 문서를 만들 때, mongoengine.Document 클래스에 대한 참조는 실제로 mongoengine.document.Document로 표시됩니다. 클래스 이름이 mongoengine이므로 mongoengine 프로젝트에서 문제가됩니다. 문법 때문에 intersphinx는 전혀 링크되지 않습니다.

기본 클래스에 대한 정보를 생성하기 위해 스핑크스에 알려줄 수있는 방법이 있습니까 (예 : mongoengine 가져 오기 문서에서 가져온 코드). 전체 모듈 경로 대신 가져올 수 있습니까?

다음 코드 :

from mongoengine import Document, EmbeddedDocumentListField 

class MyDocument(Document): 
""" my docstring """ 

는이 같은 일부 HTML을 생성합니다

class myproj.models.MyDocument(*args, **values) Bases: 
mongoengine.document.Document <-- intersphinx does not find the link to external doc! 

대신

class myproj.models.MyDocument(*args, **values) 
Bases: mongoengine.Document <-- here intersphinx will properly link 
+0

까다로운 문제. 나는 그것을 해결하는 방법을 모른다. 클래스의 기초는'__bases__' 변수에서 결정됩니다. 'MyDocument .__ bases__'는'(,)'를 반환합니다. – mzjn

+1

해결 방법을 찾았습니다. 'Document .__ module__ = "mongoengine"을 코드에 추가하십시오. – mzjn

+0

@mzjn 덕분에 일했습니다! 나는 네가 대답 할 수 있다고 생각한다. – BangTheBank

답변

1

__module__ 속성은 모듈의 이름을 보관 유지하는 클래스에 정의되었다. Document.__module__의 값은 "mongoengine.document"입니다.

속성은 쓰기, 그래서 해결 방법은 코드에 다음 줄을 추가하는 것입니다

Document.__module__ = "mongoengine" 
관련 문제