Document Writing Guide#
This guide outlines best practices for writing and maintaining documentation across the codebase and supplementary files.
In-Code Documentation (Docstrings)#
Docstrings are essential for understanding the purpose, usage, and behavior of your code. Please adhere to the following conventions:
General Rules#
Document all public classes, methods, and functions using docstrings.
Use Sphinx-style docstrings.
Do not include parameter types in the docstring—they are expected to be declared in the function signature using type hints.
Format and Directives#
Use the following directives to describe different elements:
:param <name>:— Describe a parameter.:return:— Describe the return value.:raises <exception>:— Describe exceptions the function might raise.
Example#
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
External Documentation (docs/ Directory)#
All project-level documentation is located in the docs/ directory. These documents support both users and developers by providing guides, examples, and references.
Format#
Use Markdown (
.md) or Jupyter Notebooks (.ipynb) for documentation.Markdown is preferred for narrative content and static documentation.
Use Jupyter Notebooks for executable, interactive content (e.g., tutorials or demos).
Jupyter Notebook Guidelines#
Ensure all notebooks are fully executable.
Always run all cells and save the output before committing.
Our CI/CD environment does not support GPU execution, so notebooks must be pre-executed locally.
Markdown & Notebook Directives#
Use the following patterns for rich formatting:
[name](#ref)— Internal cross-reference, e.g.,[ModuleBase](#evox.core.module.ModuleBase)or[ModuleBase](#ModuleBase)— Embed images, e.g.,
Translation#
The documentation supports multilingual content. Follow the steps below to update or generate translations.
Updating Translations (e.g., for zh_CN)#
cd docs
make gettext
sphinx-intl update -p build/gettext -l zh_CN
cd ..
python docs/fix_output.py