Sphinx no genera documentos para __init __ (self) de forma predeterminada. He probado lo siguiente:
.. automodule:: mymodule
:members:
y
..autoclass:: MyClass
:members:
En conf.py, estableciendo la siguiente sólo se añade la __init __ (self) docstring a la cadena de documentación de clase ( la documentación autodoc Esfinge parece estar de acuerdo que este es el comportamiento esperado, pero no menciona nada sobre el problema que estoy tratando de resolver):
autoclass_content = 'both'
python
python-sphinx
autodoc
Jacob mármol
fuente
fuente
"both" Both the class’ and the __init__ method’s docstring are concatenated and inserted.
-> Por lo tanto, no debería ser solo el__init__(self)
, sino también el docstring de la clase si lo tiene. ¿Puede proporcionar un caso de prueba porque si es así, se siente como un error, verdad?Respuestas:
Aquí hay tres alternativas:
Para asegurarse de que
__init__()
siempre esté documentado, puede usarautodoc-skip-member
en conf.py. Me gusta esto:Esto define explícitamente que
__init__
no se debe omitir (que es de forma predeterminada). Esta configuración se especifica una vez y no requiere ningún marcado adicional para cada clase en la fuente .rst.La
special-members
opción se agregó en Sphinx 1.1 . Hace que los miembros "especiales" (aquellos con nombres como__special__
) sean documentados por autodoc.Desde Sphinx 1.2, esta opción toma argumentos que la hacen más útil que antes.
Utilizar
automethod
:Esto debe agregarse para cada clase (no se puede usar con
automodule
, como se señala en un comentario a la primera revisión de esta respuesta).fuente
special-members
funciona bien usandoautomodule
. Úselo:special-members: __init__
solo para documentar__init__
.Estabas cerca. Puede utilizar la
autoclass_content
opción en suconf.py
archivo:fuente
autoclass_content = 'both'
opción, que documentó el método de inicio , pero hizo que el resumen automático apareciera dos veces.En los últimos años, he escrito varias variantes de
autodoc-skip-member
devoluciones de llamada para varios proyectos de Python no relacionados porque quería métodos como__init__()
,__enter__()
y__exit__()
que aparecieran en la documentación de mi API (después de todo, estos "métodos especiales" son parte de la API y qué mejor lugar para documentarlos que dentro de la cadena de documentos del método especial).Recientemente tomé la mejor implementación y la hice parte de uno de mis proyectos de Python ( aquí está la documentación ). La implementación básicamente se reduce a esto:
Sí, hay más documentación que lógica :-). La ventaja de definir una
autodoc-skip-member
devolución de llamada como esta sobre el uso de laspecial-members
opción (para mí) es que laspecial-members
opción también habilita la documentación de propiedades como__weakref__
(disponible en todas las clases de estilo nuevo, AFAIK) que considero ruido y no son útiles en absoluto. El enfoque de devolución de llamada evita esto (porque solo funciona en funciones / métodos e ignora otros atributos).fuente
setup(app)
para que Sphinx lo ejecute.__init__
método tiene una cadena de documentos no vacía. ¿Lo hace?Aunque esta es una publicación anterior, para aquellos que la estén buscando a partir de ahora, también hay otra solución introducida en la versión 1.8. De acuerdo con la documentación , puede agregar la
special-member
clave en autodoc_default_options a suconf.py
.Ejemplo:
fuente
Esta es una variante que solo incluye
__init__
si tiene argumentos:fuente