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