source/conf.py (119 lines of code) (raw):
# Configuration file for the Sphinx documentation builder.
#
# This file only contains a selection of the most common options. For a full
# list see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html
# -- Path setup --------------------------------------------------------------
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
from datetime import datetime
import os
import sys
import json
sys.path.insert(0, os.path.abspath('./ext'))
# -- Project information -----------------------------------------------------
project = 'lets-plot'
author = 'JetBrains'
# -- 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 = [
# built in extensions
"sphinx.ext.autosummary",
"sphinx.ext.githubpages",
# installed extensions
"jupyter_sphinx",
"notfound.extension",
"numpydoc",
"sphinxext.opengraph",
"sphinx_copybutton",
"sphinx_design",
"sphinx_reredirects",
# custom extensions
"create_cname",
"create_sitemap",
"extref",
"seo_meta",
"switch_lets_plot",
]
# -- Sphinx own configuration ------------------------------------------------
# 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 = []
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
import lets_plot
version = lets_plot.__version__
# The full version, including alpha/beta/rc tags.
release = lets_plot.__version__
# 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']
# These paths are either relative to html_static_path
# or fully qualified paths (eg. https://...)
html_css_files = [
'css/custom.css',
'css/colors.css',
'css/dataframe.css',
]
html_js_files = [
'js/custom.js',
'js/language_data.js',
]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The default sidebars (for documents that don't match any pattern) are
# defined by theme itself. Builtin themes are using these templates by
# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
# 'searchbox.html']``.
#
html_sidebars = {
# Default to no sidebar
'**': [],
}
# ----------------------------------------------------------------------------
# -- Built in extensions -----------------------------------------------------
# ----------------------------------------------------------------------------
# -- Autosummary extension ---------------------------------------------------
autodoc_default_options = {
'member-order': 'bysource',
'autosummary-undoc-members': False,
}
autosummary_generate = True
add_module_names = False
# ----------------------------------------------------------------------------
# -- Installed extensions ----------------------------------------------------
# ----------------------------------------------------------------------------
# -- Built in theme and PyData Sphinx theme extension ------------------------
html_theme = "pydata_sphinx_theme"
html_show_sourcelink = False
html_title = ""
html_favicon = "_static/favicon.ico"
html_context = {
'cur_year': datetime.now().year,
'python_root_doc': "python/index",
'python_root_name': "Lets-Plot for Python",
}
html_theme_options = {
"logo": {
"alt_text": "Lets-Plot",
"image_light": "_static/logo-light.svg",
"image_dark": "_static/logo-dark.svg",
"version_link": "python/pages/whats_new",
},
"header_links_before_dropdown": 1,
"icon_links": [
{
"name": "GitHub",
"url": "https://github.com/JetBrains/lets-plot",
"icon": "fa-brands fa-github",
"type": "fontawesome",
},
{
"name": "PyPI",
"url": "https://pypi.org/project/lets-plot",
"icon": "_static/images/logo/pypi.svg",
"type": "local",
"attributes": {"excluded_from": ["index", "404"]},
},
],
"show_prev_next": False,
"navbar_start": ["navbar-logo", "navbar-version"],
"navbar_end": ["theme-switcher", "navbar-icon-links"],
"article_header_start": [],
"footer_start": ["copyright"],
"footer_center": ["sphinx-and-theme-version"],
"footer_end": ["terms"],
"secondary_sidebar_items": {
"**": ["page-toc", "sourcelink"],
"index": [],
},
}
# -- Not found (404) extension -----------------------------------------------
notfound_context = {
'title': "Page not found",
'body': """
<h1>Page not found</h1>
<p>
Unfortunately we couldn't find the content you were looking for.
</p>
<p>
Try <a class="reference internal" href="/search.html">searching</a> or head back to the <a class="reference internal" href="/index.html">homepage</a>.
</p>""",
}
notfound_urls_prefix = None
# -- Numpydoc extension ------------------------------------------------------
numpydoc_show_class_members = False
# -- OpenGraph extension -----------------------------------------------------
ogp_site_url = "https://lets-plot.org/"
ogp_site_name = "Lets-Plot"
ogp_image = "_static/images/open-graph.png"
# -- Copybutton extension ----------------------------------------------------
# Only jupyter-execute code blocks coming from autodoc docstrings
copybutton_selector = "dl.py .jupyter_container .cell_input div.highlight pre"
# -- Sphinx redirects extension ----------------------------------------------
redirects_conf = open("redirects.json")
redirects = dict(json.load(redirects_conf))
redirect_html_template_file = "_templates/redirect.html.template"
# ----------------------------------------------------------------------------
# -- Custom extensions -------------------------------------------------------
# ----------------------------------------------------------------------------
# -- CNAME generator (extension) ---------------------------------------------
cname_url = "lets-plot.org"
# -- Examples references manager (extension) ---------------------------------
extref_conf = "extref_conf.json"
extref_logo_images = {
'colab': "_static/images/logo/colab.svg",
'datalore': "_static/images/logo/datalore.svg",
'dataspell': "_static/images/logo/dataspell.png",
'deepnote': "_static/images/logo/deepnote.svg",
'kaggle': "_static/images/logo/kaggle.svg",
'nbviewer': "_static/images/logo/jupyter.svg",
'nextjournal': "_static/images/logo/nextjournal.svg",
'pycharm': "_static/images/logo/pycharm.svg",
}
extref_default_image = 'square'
extref_class = "extref"