JustinTX's picture
Add files using upload-large-folder tool
d28330f verified
import os
import shutil
import sys
from datetime import datetime
from pathlib import Path
sys.path.insert(0, os.path.abspath("../.."))
__version__ = "0.0.1"
project = "slime"
copyright = f"2025-{datetime.now().year}, slime"
author = "slime Team"
version = __version__
release = __version__
extensions = [
"sphinx.ext.autodoc",
"sphinx.ext.autosummary",
"sphinx.ext.napoleon",
"sphinx.ext.viewcode",
"sphinx.ext.autosectionlabel",
"sphinx.ext.intersphinx",
"sphinx_tabs.tabs",
"myst_parser",
"sphinx_copybutton",
"sphinxcontrib.mermaid",
"nbsphinx",
"sphinx.ext.mathjax",
]
nbsphinx_allow_errors = True
nbsphinx_execute = "never"
autosectionlabel_prefix_document = True
nbsphinx_allow_directives = True
myst_enable_extensions = [
"dollarmath",
"amsmath",
"deflist",
"colon_fence",
"html_image",
"linkify",
"substitution",
]
myst_heading_anchors = 3
nbsphinx_kernel_name = "python3"
nbsphinx_execute_arguments = [
"--InlineBackend.figure_formats={'svg', 'pdf'}",
"--InlineBackend.rc={'figure.dpi': 96}",
]
nb_render_priority = {
"html": (
"application/vnd.jupyter.widget-view+json",
"application/javascript",
"text/html",
"image/svg+xml",
"image/png",
"image/jpeg",
"text/markdown",
"text/latex",
"text/plain",
)
}
myst_enable_extensions = [
"dollarmath",
"amsmath",
"deflist",
"colon_fence",
"html_image",
"linkify",
"substitution",
]
myst_heading_anchors = 3
myst_ref_domains = ["std", "py"]
templates_path = ["_templates"]
source_suffix = {
".rst": "restructuredtext",
".md": "markdown",
}
master_doc = "index"
language = os.environ.get("SLIME_DOC_LANG", "en")
exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
pygments_style = "sphinx"
html_theme = "sphinx_book_theme"
html_logo = "_static/image/logo.jpg"
html_favicon = "_static/image/logo.ico"
html_title = project
html_copy_source = True
html_last_updated_fmt = ""
html_theme_options = {
"repository_url": "https://github.com/THUDM/slime",
"repository_branch": "main",
"show_navbar_depth": 3,
"max_navbar_depth": 4,
"collapse_navbar": True,
"use_edit_page_button": True,
"use_source_button": True,
"use_issues_button": True,
"use_repository_button": True,
"use_download_button": True,
"use_sidenotes": True,
"show_toc_level": 2,
}
html_context = {
"display_github": True,
"github_user": "sgl-project",
"github_repo": "sgl-project.github.io",
"github_version": "main",
"conf_py_path": "/docs/",
}
html_static_path = ["_static"]
html_css_files = ["css/custom_log.css"]
# Add custom javascript for language toggle (en <-> zh)
html_js_files = [
"js/lang-toggle.js",
]
def _sync_examples(app):
"""Sync top-level examples into language-specific doc trees.
Policy:
- README.md -> English docs/en/_examples_synced/<example>/README.md
- README_zh.md -> Chinese docs/zh/_examples_synced/<example>/README_zh.md
- If a language-specific README missing, that example is simply skipped for that language.
"""
docs_root = Path(__file__).resolve().parent
src_dir = docs_root.parent / "examples"
if not src_dir.exists():
return
lang_cfgs = {
"en": {
"dir": docs_root / "en",
"readme_name": "README.md",
},
"zh": {
"dir": docs_root / "zh",
# primary preferred name; will fallback to README.md
"readme_name": "README_zh.md",
},
}
for lang, cfg in lang_cfgs.items():
lang_dir = cfg["dir"]
if not lang_dir.exists():
continue
out_dir = lang_dir / "_examples_synced"
if out_dir.exists():
shutil.rmtree(out_dir)
out_dir.mkdir(parents=True, exist_ok=True)
entries = [] # (example_name, readme_rel_path)
for d in sorted(src_dir.iterdir()):
if not d.is_dir():
continue
# language-specific selection with fallback for zh
if lang == "zh":
primary = d / cfg["readme_name"] # README_zh.md
fallback = d / "README.md"
candidate = primary if primary.exists() else fallback
else:
candidate = d / cfg["readme_name"]
if not candidate.exists():
continue # skip entirely if nothing suitable
target_dir = out_dir / d.name
target_dir.mkdir(parents=True, exist_ok=True)
shutil.copy2(candidate, target_dir / "README.md")
entries.append((d.name, f"_examples_synced/{d.name}/README.md"))
def setup(app):
# ensure examples are synced before reading source files
app.connect("builder-inited", _sync_examples)
myst_enable_extensions = [
"dollarmath",
"amsmath",
"deflist",
"colon_fence",
]
myst_heading_anchors = 5
htmlhelp_basename = "slimedoc"
latex_elements = {}
latex_documents = [
(master_doc, "slime.tex", "slime Documentation", "slime Team", "manual"),
]
man_pages = [(master_doc, "slime", "slime Documentation", [author], 1)]
texinfo_documents = [
(
master_doc,
"slime",
"slime Documentation",
author,
"slime",
"One line description of project.",
"Miscellaneous",
),
]
epub_title = project
epub_exclude_files = ["search.html"]
copybutton_prompt_text = r">>> |\.\.\. "
copybutton_prompt_is_regexp = True
autodoc_preserve_defaults = True
navigation_with_keys = False
autodoc_mock_imports = [
"torch",
"transformers",
"triton",
]
intersphinx_mapping = {
"python": ("https://docs.python.org/3.12", None),
"typing_extensions": ("https://typing-extensions.readthedocs.io/en/latest", None),
"pillow": ("https://pillow.readthedocs.io/en/stable", None),
"numpy": ("https://numpy.org/doc/stable", None),
"torch": ("https://pytorch.org/docs/stable", None),
}
html_theme = "sphinx_book_theme"
nbsphinx_prolog = """
.. raw:: html
<style>
.output_area.stderr, .output_area.stdout {
color: #d3d3d3 !important; /* light gray */
}
</style>
"""