Guia de Escrita de Documentação
Este guia descreve as melhores práticas para escrever e manter documentação em todo o código-fonte e arquivos suplementares.
Documentação no Código (Docstrings)
Docstrings são essenciais para entender o propósito, uso e comportamento do seu código. Por favor, siga as seguintes convenções:
Regras Gerais
- Documente todas as classes, métodos e funções públicas usando docstrings.
- Use docstrings no estilo Sphinx.
- Não inclua tipos de parâmetros na docstring — espera-se que sejam declarados na assinatura da função usando type hints.
Formato e Diretivas
Use as seguintes diretivas para descrever diferentes elementos:
:param <name>:— Descreva um parâmetro.:return:— Descreva o valor de retorno.:raises <exception>:— Descreva exceções que a função pode lançar.
Exemplo
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
Documentação Externa (Diretório docs/)
Toda a documentação em nível de projeto está localizada no diretório docs/. Esses documentos apoiam tanto usuários quanto desenvolvedores, fornecendo guias, exemplos e referências.
Formato
- Use Markdown (
.md) ou Jupyter Notebooks (.ipynb) para documentação. - Markdown é preferido para conteúdo narrativo e documentação estática.
- Use Jupyter Notebooks para conteúdo executável e interativo (por exemplo, tutoriais ou demonstrações).
Diretrizes para Jupyter Notebook
- Certifique-se de que todos os notebooks sejam totalmente executáveis.
- Sempre execute todas as células e salve a saída antes de fazer commit.
- Nosso ambiente de CI/CD não suporta execução com GPU, então os notebooks devem ser pré-executados localmente.
Diretivas de Markdown e Notebook
Use os seguintes padrões para formatação rica:
[name](#ref)— Referência cruzada interna, por exemplo,[ModuleBase](#evox.core.module.ModuleBase)ou[ModuleBase](#ModuleBase)— Incorporar imagens, por exemplo,
Tradução
A documentação suporta conteúdo multilíngue. Siga os passos abaixo para atualizar ou gerar traduções.
Atualizando Traduções (por exemplo, para zh_CN)
cd docs
make gettext
sphinx-intl update -p build/gettext -l zh_CN
cd ..
python docs/fix_output.py