Files
aisystem/build_books/sphinx_conf.py
2024-06-18 21:37:06 +08:00

222 lines
7.6 KiB
Python

# -- Project information -----
import os
from urllib.request import urlopen
from pathlib import Path
project = "AISystem & AIInfra (AI 系统原理)"
# copyright = "2024"
# author = "ZOMI"
language = "cn" # For testing language translations
master_doc = "index"
# -- General configuration ------
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
"ablog",
"myst_nb",
"numpydoc",
"sphinx.ext.autodoc",
"sphinx.ext.intersphinx",
"sphinx.ext.viewcode",
"sphinx_copybutton",
"sphinx_design",
"sphinx_examples",
"sphinx_tabs.tabs",
"sphinx_thebe",
"sphinx_togglebutton",
"sphinxcontrib.bibtex",
"sphinxext.opengraph",
# For the kitchen sink
"sphinx.ext.todo",
]
# Add any paths that contain templates here, relative to this directory.
templates_path = ["_templates"]
# 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 = ["_build", "Thumbs.db", ".DS_Store"]
intersphinx_mapping = {
"python": ("https://docs.python.org/3.8", None),
"sphinx": ("https://www.sphinx-doc.org/en/master", None),
"pst": ("https://pydata-sphinx-theme.readthedocs.io/en/latest/", None),
}
nitpick_ignore = [
("py:class", "docutils.nodes.document"),
("py:class", "docutils.parsers.rst.directives.body.Sidebar"),
]
suppress_warnings = ["myst.domains", "ref.ref"]
numfig = True
myst_enable_extensions = [
"dollarmath",
"amsmath",
"deflist",
# "html_admonition",
# "html_image",
"colon_fence",
# "smartquotes",
# "replacements",
# "linkify",
# "substitution",
]
# -- Options for HTML output ----
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = "sphinx_book_theme"
html_logo = "_static/logo-wide.svg"
html_title = "AI System"
html_copy_source = True
html_favicon = "_static/logo-square.svg"
html_last_updated_fmt = ""
# html_sidebars = {
# "reference/blog/*": [
# "navbar-logo.html",
# "search-field.html",
# "ablog/postcard.html",
# "ablog/recentposts.html",
# "ablog/tagcloud.html",
# "ablog/categories.html",
# "ablog/archives.html",
# "sbt-sidebar-nav.html",
# ]
# }
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ["_static"]
html_css_files = ["custom.css"]
nb_execution_mode = "cache"
thebe_config = {
"repository_url": "https://github.com/binder-examples/jupyter-stacks-datascience",
"repository_branch": "master",
}
html_theme_options = {
"path_to_docs": "",
"repository_url": "https://github.com/chenzomi12/chenzomi12.github.io/",
"repository_branch": "master",
"launch_buttons": {
"binderhub_url": "https://mybinder.org",
"colab_url": "https://colab.research.google.com/",
"deepnote_url": "https://deepnote.com/",
"notebook_interface": "jupyterlab",
"thebe": True,
# "jupyterhub_url": "https://datahub.berkeley.edu", # For testing
},
"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": 3,
"logo": {
"image_dark": "_static/logo-wide.svg",
# "text": html_title, # Uncomment to try text with logo
},
"icon_links": [
{
"name": "GitHub",
"url": "https://github.com/chenzomi12/AISystem",
"icon": "fa-brands fa-github",
}, {
"name": "Youtube",
"url": "https://www.youtube.com/@ZOMI666",
"icon": "fa-brands fa-youtube"
}, {
"name": "Blibili",
"url": "https://space.bilibili.com/517221395",
"icon": "fa-brands fa-bilibili",
}
],
# For testing
# "use_fullscreen_button": False,
# "home_page_in_toc": True,
# "extra_footer": "<a href='https://google.com'>Test</a>", # DEPRECATED KEY
# "show_navbar_depth": 2,
# Testing layout areas
# "navbar_start": ["test.html"],
# "navbar_center": ["test.html"],
# "navbar_end": ["test.html"],
# "navbar_persistent": ["test.html"],
# "footer_start": ["test.html"],
# "footer_end": ["test.html"]
}
# sphinxext.opengraph
ogp_social_cards = {
"image": "_static/logo-square.png",
}
# # -- ABlog config ----
blog_path = "reference/blog"
blog_post_pattern = "reference/blog/*.md"
blog_baseurl = "https://sphinx-book-theme.readthedocs.io"
fontawesome_included = True
post_auto_image = 1
post_auto_excerpt = 2
nb_execution_show_tb = "READTHEDOCS" in os.environ
bibtex_bibfiles = ["references.bib"]
# To test that style looks good with common bibtex config
bibtex_reference_style = "author_year"
bibtex_default_style = "plain"
numpydoc_show_class_members = False # for automodule:: urllib.parse stub file issue
linkcheck_ignore = [
"http://someurl/release", # This is a fake link
"https://doi.org", # These don't resolve properly and cause SSL issues
]
# -- Download latest theme elements page from PyData --
# path_pydata_content = "https://raw.githubusercontent.com/pydata/pydata-sphinx-theme/main/docs/user_guide/theme-elements.md" # noqa
# path_content_file = Path(__file__).parent / "content/pydata-content-blocks.md"
# if not path_content_file.exists():
# with urlopen(path_pydata_content) as resp:
# # Read in the content page file, then update the title and add context
# content = resp.read().decode().split("\n")
# ix_title = content.index("# Theme-specific elements")
# content[ix_title] = "# PyData Theme Elements"
# content.insert(
# ix_title + 1,
# "\nThis is a collection of content blocks with special support from this theme's parent theme, [the PyData Sphinx Theme](https://pydata-sphinx-theme.readthedocs.io/en/latest/user_guide/theme-elements.html)\n", # noqa
# ) # noqa
# content = "\n".join(content)
# # Replace a relative link in the pydata docs w/ the respective one here
# content = content.replace("../examples/pydata.ipynb", "notebooks.md")
# # Write to disk in a location that will be ignored by git
# path_content_file.write_text(content)
def setup(app):
# -- To demonstrate ReadTheDocs switcher ----
# This links a few JS and CSS files that mimic the environment that RTD uses
# so that we can test RTD-like behavior. We don't need to run it on RTD and we
# don't wanted it loaded in GitHub Actions because it messes up the lighthouse
# results.
if not os.environ.get("READTHEDOCS") and not os.environ.get("GITHUB_ACTIONS"):
app.add_css_file(
"https://assets.readthedocs.org/static/css/readthedocs-doc-embed.css"
)
app.add_css_file("https://assets.readthedocs.org/static/css/badge_only.css")
# Create the dummy data file so we can link it
# ref: https://github.com/readthedocs/readthedocs.org/blob/bc3e147770e5740314a8e8c33fec5d111c850498/readthedocs/core/static-src/core/js/doc-embed/footer.js # noqa: E501
app.add_js_file("rtd-data.js")
app.add_js_file(
"https://assets.readthedocs.org/static/javascript/readthedocs-doc-embed.js",
priority=501,
)