O Sphinx não gera documentos para __init __ (self) por padrão. Eu tentei o seguinte:
.. automodule:: mymodule
:members:
e
..autoclass:: MyClass
:members:
Em conf.py, definir o seguinte apenas anexa a docstring __init __ (self) à docstring da classe ( a documentação do autodoc do Sphinx parece concordar que esse é o comportamento esperado, mas não menciona nada sobre o problema que estou tentando resolver):
autoclass_content = 'both'
python
python-sphinx
autodoc
Jacob Marble
fonte
fonte
"both" Both the class’ and the __init__ method’s docstring are concatenated and inserted.
-> Portanto, não deve ser apenas o__init__(self)
, mas também a docstring da classe, se você tiver isso. Você pode fornecer um caso de teste porque, se for assim, parece um bug, certo?Respostas:
Aqui estão três alternativas:
Para garantir que
__init__()
esteja sempre documentado, você pode usarautodoc-skip-member
em conf.py. Como isso:Isso define explicitamente
__init__
não deve ser ignorado (o que é por padrão). Essa configuração é especificada uma vez e não requer nenhuma marcação adicional para todas as classes na fonte .rst.A
special-members
opção foi adicionada no Sphinx 1.1 . Faz com que membros "especiais" (aqueles com nomes como__special__
) sejam documentados pelo autodoc.Desde o Sphinx 1.2, esta opção aceita argumentos que a tornam mais útil do que era anteriormente.
Use
automethod
:Isso deve ser adicionado para todas as classes (não pode ser usado com
automodule
, como apontado em um comentário à primeira revisão desta resposta).fonte
special-members
funciona bem usandoautomodule
. Use:special-members: __init__
para documentar apenas__init__
.Você estava perto. Você pode usar a
autoclass_content
opção em seuconf.py
arquivo:fonte
autoclass_content = 'both'
opção, que documentou o método init , mas fez o resumo automático aparecer duas vezes.Nos últimos anos tenho escrito várias variantes de
autodoc-skip-member
retornos de chamada para vários projetos Python não relacionados porque eu queria métodos gosto__init__()
,__enter__()
e__exit__()
para mostrar-se na minha documentação da API (afinal, esses "métodos especiais" são parte da API e que melhor lugar para documentá-los do que dentro da docstring do método especial).Recentemente, peguei a melhor implementação e a incluí em um dos meus projetos Python ( aqui está a documentação ). A implementação basicamente se resume a isto:
Sim, há mais documentação do que lógica :-). A vantagem de definir um
autodoc-skip-member
retorno de chamada como esse sobre o uso daspecial-members
opção (para mim) é que aspecial-members
opção também permite a documentação de propriedades como__weakref__
(disponível em todas as classes de novo estilo, AFAIK) que considero ruído e nada útil. A abordagem de retorno de chamada evita isso (porque só funciona em funções / métodos e ignora outros atributos).fonte
setup(app)
para ser executado pelo Sphinx.__init__
método possui uma docstring não vazia. É mesmo?Embora esta seja uma postagem mais antiga, para quem está pesquisando a partir de agora, existe também outra solução introduzida na versão 1.8. De acordo com a documentação , você pode adicionar a
special-member
chave em autodoc_default_options ao seuconf.py
.Exemplo:
fonte
Esta é uma variante que inclui apenas
__init__
se tiver argumentos:fonte