En Sphinx, puedo registrar un montón de palabras clave que siempre deben ser traducidos en los enlaces?

StackOverflow https://stackoverflow.com/questions/2472364

  •  20-09-2019
  •  | 
  •  

Pregunta

Mis cadenas de documentación tienen referencias a otras clases de Python que he definido. Cada vez Sphinx se encuentra con una de estas clases, lo quiero para insertar un enlace a la documentación para esa otra clase. ¿Es esto posible en Sphinx?

En concreto, tengo una cadena de documentación como:

'''This class contains a bunch of Foo objects'''

Podría escribir:

'''This class contains a bunch of :class:`~foo.Foo` objects'''

pero yo preferiría que Sphinx encuentra todo Foo texto a juego y hace que parezca como si hubiera tecleado     : Clase: ~foo.Foo

¿Fue útil?

Solución

Puede utilizar macros.

En mi proyecto, tengo un archivo de cabecera que contiene todas las clases "importantes" y funciones globales y su abreviatura. Dos líneas de ejemplo:

.. |PostItem| replace:: :class:`PostItem <hklib.PostItem>`
.. |PostNotFoundError| replace:: :class:`PostNotFoundError <hklib.PostNotFoundError>`

En mis archivos rst, que incluyen el archivo de cabecera. Entonces puedo utilizar las macros en cualquier archivo rst:

.. include:: defs.hrst

|PostItem| is a nice class. |PostNotFoundError|, on the other hand is not.

(Puede incluir cadenas de documentación de archivos de código fuente de Python, así, utilizando la extensión autogen. Las macros en los que serán reemplazados también.)

Acerca de su ejemplo: Yo añadiría Foo al archivo de encabezado y escribir la cadena de documentación de esta manera:

'''This class contains a bunch of |Foo| objects'''

Otros consejos

Esfinge tiene un gran número de funciones de texto interpretados por esto.

http://sphinx.pocoo.org/markup /inline.html#cross-referencing-python-objects

  

Quiero entrar Foo y tienen Sphinx interpretarlo como si hubiera escrito: Clase: ~foo.Foo

Eso suena poco práctico. Parece que paralizaría RST tratando de análisis su texto. Buscando texto interpretado y las pocas reglas que citan RST soportes (*_|`) está sobre el límite que sea práctico.

Lo que están pidiendo podría conducir a RST tomar todo el día para comprobar cada Foo ejemplo, en todos los contextos y la razón es posible determinar si querías un enlace o no. Lo que quiere esto sólo en los casos de otro tipo, sin decoración de Foo; Búsqueda trivial y reemplazar no funcionaría.

Se puede meterse con docstring pre-procesamiento.

http://sphinx.pocoo.org/ext/autodoc.html # docstring-procesamiento previo

Esto puede permitir que intente una búsqueda global y reemplazar la estrategia en el texto de su cadena de documentación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top