Files
arcs/arcs-sdk/docs/zh/conf.py
2026-08-13 16:50:52 +08:00

257 lines
8.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Configuration file for the Sphinx documentation builder.
#
# For the full list of built-in configuration values, see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html
# -- Project information -----------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
import os
import os.path
import subprocess
import shutil
import re
import sys
import datetime
from pathlib import Path
import sphinx_rtd_theme
SDK_BASE = Path(__file__).resolve().parents[2]
HTML_STATIC_DIR = Path(__file__).resolve().parents[0] / "_static"
HTML_ASSETS_DIR = Path(__file__).resolve().parents[1] / "assets"
DOXY_OUT = Path(__file__).resolve().parents[0] / "_static" / "api_doc"
sys.path.insert(0, str(SDK_BASE / "docs" / "_ext"))
os.environ["SDK_BASE"] = str(SDK_BASE)
project = 'Arcs Software Development Kit'
copyright = '2020-%s, LISTENAI' % datetime.date.today().year
author = '聆思科技固件组'
# -- General configuration ---------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
extensions = [
'sphinx_rtd_theme',
'myst_parser',
"sphinx.ext.todo",
"sphinx.ext.extlinks",
'sphinx.ext.duration',
"sphinx.ext.viewcode",
'sphinxcontrib.moderncmakedomain',
"external_content",
"doxyrunner",
"sphinx_tabs.tabs",
"source_link" # 自动添加源码链接
]
templates_path = ['_templates']
DOXY_OUT.mkdir(parents = True, exist_ok = True)
doxyrunner_doxygen = os.environ.get("DOXYGEN_EXECUTABLE", "doxygen")
doxyrunner_doxyfile = SDK_BASE / "docs" / "doxygen" / "Doxyfile"
doxyrunner_outdir = DOXY_OUT
doxyrunner_fmt = True
doxyrunner_fmt_vars = {"SDK_BASE": str(SDK_BASE)}
doxyrunner_outdir_var = "DOXYGEN_OUTPUT_DIR"
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
exclude_patterns = [
# 示例章节文件sample_build.rst, sample_flash.rst仅用于 include不作为独立页面
"sample_build.rst",
"sample_flash.rst",
]
html_extra_path = []
source_suffix = {
'.rst': 'restructuredtext',
'.md': 'markdown',
}
external_content_contents = [
(SDK_BASE, "docs/*.rst"),
(SDK_BASE, "CHANGELOG.md"),
(SDK_BASE / "docs/zh", "[!_]*"),
(SDK_BASE, "drivers/**/*.rst"),
(SDK_BASE, "drivers/**/*.md"),
(SDK_BASE, "boards/*.rst"),
(SDK_BASE, "boards/**/*.md"),
(SDK_BASE, "components/**/*.rst"),
(SDK_BASE, "components/**/*.md"),
(SDK_BASE, "samples/**/*.rst"),
(SDK_BASE, "samples/**/*.md"),
(SDK_BASE, "demos/**/*.rst"),
(SDK_BASE, "demos/**/*.md"),
(SDK_BASE, "tools/**/*.rst"),
(SDK_BASE, "tools/**/*.md"),
## modules目录下存在很多不规范的README.md指定添加构建目录
(SDK_BASE, "modules/fs/README.md"),
(SDK_BASE, "modules/lisa_shell/README.md"),
(SDK_BASE, "modules/usb/device/uvc/README.md"),
]
external_content_exclude = [
"drivers/porting_docs/**/*.md",
"drivers/lisa_device/**/*.md",
"drivers/Devices_Docs_Spec.md",
"samples/drivers/hal/**/README.md",
"samples/Samples_Spec.md",
"samples/drivers/devices/Devices_Samples_Spec.md",
"samples/modules/sqlite3/README.md",
"components/acomp/logger/**/README.md",
"demos/face_detect/src/button/FlexibleButton/README.md",
]
# Keep template files from being deleted by external_content
# Note: CSS/JS files are in docs/assets/ which is outside the source dir
external_content_keep = [
"_templates/*",
"_templates/**/*",
]
# -- Options for HTML output -------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
html_theme = 'sphinx_rtd_theme'
html_theme_options = {
"logo_only": True,
"prev_next_buttons_location": None
}
html_show_sphinx = False
html_logo = r'../assets/logo.svg'
html_static_path = [str(HTML_STATIC_DIR), str(HTML_ASSETS_DIR)]
html_last_updated_fmt = "%b %d, %Y"
html_domain_indices = False
html_split_index = True
html_show_sphinx = False
# Version switcher configuration
html_context = {
# 当前版本
'current_version': 'latest',
# 版本列表
'versions': [
('latest', 'https://docs2.listenai.com/arcs-sdk/latest/zh/html/index.html'),
('v0.1.0', 'https://docs2.listenai.com/arcs-sdk/v0.1.0/zh/html/index.html'),
('v0.1.1', 'https://docs2.listenai.com/arcs-sdk/v0.1.1/zh/html/index.html'),
('v0.1.2', 'https://docs2.listenai.com/arcs-sdk/v0.1.2/zh/html/index.html'),
],
# 显示版本警告横幅(可选)
'display_github': False,
}
# Add custom CSS and JS files
html_css_files = [
'version-switcher.css',
'feedback-widget.css',
]
html_js_files = [
'version-switcher.js',
'feedback-widget.js',
]
suppress_warnings = ['toc.excluded',
'toc.not_readable',
'toc.not_included', # 允许 sample_build.rst、sample_flash.rst 等被 include 的文件不在 toctree 中
'toc.secnum','toc.circular','epub.duplicated_toc_entry','autosectionlabel.*',
'app.add_source_parser',
'myst.header',
'ref.doc',
'ref.ref',
'myst.domains',
'myst.xref_missing']
myst_heading_anchors = 2
myst_enable_extensions = [
"amsmath",
"colon_fence",
"deflist",
"dollarmath",
"fieldlist",
"html_admonition",
"html_image",
"replacements",
"smartquotes",
"strikethrough",
"substitution",
"tasklist",
]
def setup(app):
"""Sphinx setup hook to add custom HTML for version switcher"""
def add_version_switcher(app, pagename, templatename, context, doctree):
"""Add version switcher HTML to every page"""
versions = context.get('versions', [])
current_version = context.get('current_version', '')
if versions:
version_html = '''
<div class="rst-versions" data-toggle="rst-versions" role="note">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> 文档版本 </span>
<span class="current-version-label">v: {}</span>
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>版本</dt>
'''.format(current_version)
for version_name, version_url in versions:
if version_name == current_version:
version_html += f' <dd><strong>{version_name}</strong></dd>\n'
else:
version_html += f' <dd><a href="{version_url}">{version_name}</a></dd>\n'
version_html += ''' </dl>
</div>
</div>
'''
context['version_switcher_html'] = version_html
app.connect('html-page-context', add_version_switcher)
# -- Source Link Configuration -----------------------------------------------
# 配置源码链接扩展
# 仓库基础 URL (仅配置到 /-/tree/ 之前的部分,分支名会自动根据版本添加)
# 支持 GitHub/GitLab 或内部 Git 仓库
# 例如: 'https://github.com/listenai/arcs-sdk' (会自动添加 /tree/分支名)
# 'https://cloud.listenai.com/CSKG836746/arcs-sdk/public/arcs-sdk' (会自动添加 /-/tree/分支名)
source_link_base_url = os.environ.get(
"SOURCE_LINK_BASE_URL",
"https://cloud.listenai.com/CSKG836746/arcs-sdk/public/arcs-sdk/-/tree/master"
)
# 文档版本到 Git 分支的映射
# 如果版本不在映射中,会使用以下规则:
# - 'latest' -> 'master'
# - 'v0.1.0' -> 'release/v0.1.0'
source_link_version_branches = {
'latest': 'master',
'v0.1.0': 'release/v0.1.0',
'v0.1.1': 'release/v0.1.1',
# 添加更多版本映射...
}
# 哪些文档需要添加源码链接 (支持通配符)
source_link_patterns = [
"samples/**/*.md",
"samples/**/*.rst",
"demos/**/*.md",
"demos/**/*.rst",
]
# 是否显示本地路径
source_link_show_local_path = True
# 源码位置标签文本
source_link_label = "📁 源码位置"