Guia de Escritura de Documentacion
Esta guia describe las mejores practicas para escribir y mantener la documentacion en el codigo fuente y los archivos complementarios.
Documentacion en el Codigo (Docstrings)
Los docstrings son esenciales para entender el proposito, uso y comportamiento de tu codigo. Por favor, sigue las siguientes convenciones:
Reglas Generales
- Documenta todas las clases, metodos y funciones publicas usando docstrings.
- Usa docstrings de estilo Sphinx.
- No incluyas tipos de parametros en el docstring; se espera que se declaren en la firma de la funcion usando anotaciones de tipo.
Formato y Directivas
Usa las siguientes directivas para describir diferentes elementos:
:param <nombre>:— Describe un parametro.:return:— Describe el valor de retorno.:raises <excepcion>:— Describe las excepciones que la funcion podria lanzar.
Ejemplo
def add(a: int, b: int) -> int:
"""
Add two integers.
:param a: The first integer.
:param b: The second integer.
:return: The sum of the two integers.
:raises ValueError: If either input is not an integer.
"""
if not isinstance(a, int) or not isinstance(b, int):
raise ValueError("Inputs must be integers.")
return a + b
Documentacion Externa (Directorio docs/)
Toda la documentacion a nivel de proyecto se encuentra en el directorio docs/. Estos documentos apoyan tanto a usuarios como a desarrolladores proporcionando guias, ejemplos y referencias.
Formato
- Usa Markdown (
.md) o Jupyter Notebooks (.ipynb) para la documentacion. - Markdown es preferido para contenido narrativo y documentacion estatica.
- Usa Jupyter Notebooks para contenido ejecutable e interactivo (por ejemplo, tutoriales o demos).
Directrices para Jupyter Notebooks
- Asegurate de que todos los notebooks sean completamente ejecutables.
- Siempre ejecuta todas las celdas y guarda la salida antes de hacer commit.
- Nuestro entorno de CI/CD no soporta ejecucion con GPU, por lo que los notebooks deben ser pre-ejecutados localmente.
Directivas de Markdown y Notebooks
Usa los siguientes patrones para formato enriquecido:
[nombre](#ref)— Referencia cruzada interna, por ejemplo,[ModuleBase](#evox.core.module.ModuleBase)o[ModuleBase](#ModuleBase)— Insertar imagenes, por ejemplo,
Traduccion
La documentacion soporta contenido multilingue. Sigue los pasos a continuacion para actualizar o generar traducciones.
Actualizar Traducciones (por ejemplo, para zh_CN)
cd docs
make gettext
sphinx-intl update -p build/gettext -l zh_CN
cd ..
python docs/fix_output.py