Руководство по написанию документации
Это руководство описывает лучшие практики написания и поддержки документации в кодовой базе и дополнительных файлах.
Документация в коде (Docstrings)
Строки документации необходимы для понимания назначения, использования и поведения вашего кода. Пожалуйста, придерживайтесь следующих соглашений:
Общие правила
- Документируйте все публичные классы, методы и функции с помощью строк документации.
- Используйте строки документации в стиле Sphinx.
- Не включайте типы параметров в строку документации — они должны быть объявлены в сигнатуре функции с помощью аннотаций типов.
Формат и директивы
Используйте следующие директивы для описания различных элементов:
:param <name>:— Описание параметра.:return:— Описание возвращаемого значения.:raises <exception>:— Описание исключений, которые может вызвать функция.
Пример
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
Внешняя документация (каталог docs/)
Вся документация уровня проекта находится в каталоге docs/. Эти документы поддерживают как пользователей, так и разработчиков, предоставляя руководства, примеры и справочные материалы.
Формат
- Используйте Markdown (
.md) или Jupyter Notebooks (.ipynb) для документации. - Markdown предпочтителен для повествовательного контента и статической документации.
- Используйте Jupyter Notebooks для исполняемого, интерактивного контента (например, учебных пособий или демонстраций).
Рекомендации по Jupyter Notebook
- Убедитесь, что все ноутбуки полностью исполняемы.
- Всегда запускайте все ячейки и сохраняйте вывод перед коммитом.
- Наша среда CI/CD не поддерживает выполнение на GPU, поэтому ноутбуки должны быть предварительно выполнены локально.
Директивы Markdown и Notebook
Используйте следующие шаблоны для расширенного форматирования:
[name](#ref)— Внутренняя перекрёстная ссылка, например,[ModuleBase](#evox.core.module.ModuleBase)или[ModuleBase](#ModuleBase)— Вставка изображений, например,
Перевод
Документация поддерживает многоязычный контент. Следуйте приведённым ниже шагам для обновления или генерации переводов.
Обновление переводов (например, для zh_CN)
cd docs
make gettext
sphinx-intl update -p build/gettext -l zh_CN
cd ..
python docs/fix_output.py