conf.py Examples

Introduction

The configuration directory must contain a file named conf.py . This file (containing Python code) is called the « build configuration file » and contains all configuration needed to customize Sphinx input and output behavior.

The configuration file is executed as Python code at build time (using execfile() , and with the current directory set to its containing directory), and therefore can execute arbitrarily complex code.

Sphinx then reads simple names from the file’s namespace as its configuration.

pypi Example

In your doc/source directory is now a python file called conf.py .

This is the file that controls the basics of how sphinx runs when you run a build. Here you can do this like:

  • Change the version/release number by setting the version and release variables.

  • Set the project name and author name.

  • Setup a project logo.

  • Set the default style to sphinx or default . Default is what the standard python docs use.

and much much more.

Browsing through this file will give you an understanding of the basics.

Exclude patterns

Conf.py file for this project

  1# Configuration file for the Sphinx documentation builder.
  2#
  3# This file only contains a selection of the most common options. For a full
  4# list see the documentation:
  5# http://www.sphinx-doc.org/en/master/config
  6# -- Path setup --------------------------------------------------------------
  7# If extensions (or modules to document with autodoc) are in another directory,
  8# add these directories to sys.path here. If the directory is relative to the
  9# documentation root, use os.path.abspath to make it absolute, like shown here.
 10#
 11# import os
 12# import sys
 13# sys.path.insert(0, os.path.abspath('.'))
 14import platform
 15from datetime import datetime
 16from zoneinfo import ZoneInfo
 17
 18import sphinx
 19import sphinx_material
 20
 21# If extensions (or modules to document with autodoc) are in another directory,
 22# add these directories to sys.path here. If the directory is relative to the
 23# documentation root, use os.path.abspath to make it absolute, like shown here.
 24# sys.path.insert(0, os.path.abspath("./src"))
 25
 26
 27project = "Documentation formats"
 28html_title = project
 29
 30author = f"DevOps people"
 31html_logo = "images/documentation.png"
 32html_favicon = "images/documentation.png"
 33release = "0.1.0"
 34now = datetime.now(tz=ZoneInfo("Europe/Paris"))
 35version = f"{now.year}-{now.month:02}-{now.day:02} {now.hour:02}H ({now.tzinfo})"
 36today = version
 37
 38extensions = [
 39    "sphinx.ext.autodoc",
 40    "sphinx.ext.doctest",
 41    "sphinx.ext.extlinks",
 42    "sphinx.ext.intersphinx",
 43    "sphinx.ext.todo",
 44    "sphinx.ext.mathjax",
 45    "sphinx.ext.viewcode",
 46    "sphinx_copybutton",
 47]
 48
 49# https://sphinx-design.readthedocs.io/en/furo-theme/get_started.html
 50extensions.append("sphinx_design")
 51
 52
 53# Add any paths that contain templates here, relative to this directory.
 54templates_path = ["_templates"]
 55exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
 56html_static_path = ["_static"]
 57html_show_sourcelink = True
 58html_sidebars = {
 59    "**": ["logo-text.html", "globaltoc.html", "localtoc.html", "searchbox.html"]
 60}
 61extensions.append("sphinx_material")
 62html_theme_path = sphinx_material.html_theme_path()
 63html_context = sphinx_material.get_html_context()
 64html_theme = "sphinx_material"
 65
 66extensions.append("sphinx_design")
 67
 68extensions.append("sphinx.ext.intersphinx")
 69intersphinx_mapping = {
 70    "sphinx": ("https://www.sphinx-doc.org/en/master", None),
 71    "python": ("https://docs.python.org/", None),
 72    "tuto_python": ("https://gdevops.frama.io/python/tuto/", None),
 73    "tuto_doc": ("https://gdevops.frama.io/documentation/tuto", None),
 74    "doc_news": ("https://gdevops.frama.io/documentation/news", None),
 75    "tuto_css": ("https://gdevops.frama.io/web/tuto-css/", None),
 76    "tuto_django": ("https://gdevops.frama.io/django/tuto/", None),
 77    "blockdiag": ("http://blockdiag.com/en/", None),
 78    "tuto_sphinx": ("https://gdevops.frama.io/documentation/sphinx", None),
 79}
 80extensions.append("sphinx.ext.todo")
 81todo_include_todos = True
 82
 83
 84# material theme options (see theme.conf for more information)
 85# https://gitlab.com/bashtage/sphinx-material/blob/master/sphinx_material/sphinx_material/theme.conf
 86# Colors
 87# The theme color for mobile browsers. Hex color.
 88# theme_color = #3f51b5
 89# Primary colors:
 90# red, pink, purple, deep-purple, indigo, blue, light-blue, cyan,
 91# teal, green, light-green, lime, yellow, amber, orange, deep-orange,
 92# brown, grey, blue-grey, white
 93# Accent colors:
 94# red, pink, purple, deep-purple, indigo, blue, light-blue, cyan,
 95# teal, green, light-green, lime, yellow, amber, orange, deep-orange
 96# color_accent = blue
 97# color_primary = blue-grey
 98
 99# material theme options (see theme.conf for more information)
100html_theme_options = {
101    "base_url": "https://gdevops.frama.io/documentation/formats",
102    "repo_url": "https://framagit.org/gdevops/documentation/formats",
103    "repo_name": project,
104    "html_minify": False,
105    "html_prettify": True,
106    "css_minify": True,
107    "globaltoc_depth": -1,
108    "repo_type": "gitlab",
109    "color_primary": "green",
110    "color_accent": "cyan",
111    "theme_color": "#2196f3",
112    "nav_title": f"{project} ({today})",
113    "master_doc": False,
114    "nav_links": [
115        {
116            "href": "genindex",
117            "internal": True,
118            "title": "Index",
119        },
120        {
121            "href": "https://gdevops.frama.io/documentation/linkertree",
122            "internal": False,
123            "title": "Liens documentation",
124        },
125        {
126            "href": "https://gdevops.frama.io/web/linkertree/",
127            "internal": False,
128            "title": "Liens Web",
129        },
130        {
131            "href": "https://linkertree.frama.io/pvergain/",
132            "internal": False,
133            "title": "Liens pvergain",
134        },
135    ],
136    "heroes": {
137        "index": "Documentation formats",
138    },
139    "table_classes": ["plain"],
140}
141# https://github.com/sphinx-contrib/yasfb
142extensions.append("yasfb")
143feed_base_url = html_theme_options["base_url"]
144feed_author = "Scribe"
145# https://sphinx-design.readthedocs.io/en/furo-theme/get_started.html
146extensions.append("sphinx_design")
147# https://sphinx-tags.readthedocs.io/en/latest/quickstart.html#installation
148extensions.append("sphinx_tags")
149tags_create_tags = True
150# Whether to display tags using sphinx-design badges.
151tags_create_badges = True
152
153extlinks = {
154    "duref": (
155        "http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#%s",
156        "rST %s",
157    ),
158    "durole": (
159        "http://docutils.sourceforge.net/docs/ref/rst/roles.html#%s",
160        "rST role %s",
161    ),
162    "dudir": (
163        "http://docutils.sourceforge.net/docs/ref/rst/directives.html#%s",
164        "rST directive %s",
165    ),
166    "graphvizattr": (
167        "https://graphviz.org/docs/attrs/%s/",
168        "%s attribute",
169    ),
170    "dutree": (
171        "https://docutils.sourceforge.io/docs/ref/doctree.html#%s",
172        "%s",
173    ),
174}
175
176def setup(app):
177    from sphinx.ext.autodoc import cut_lines
178    from sphinx.util.docfields import GroupedField
179    app.add_object_type('confval', 'confval',
180                        objname='configuration value',
181                        indextemplate='pair: %s; configuration value')
182
183language = "fr"
184html_last_updated_fmt = ""
185
186todo_include_todos = True
187# html_favicon = "images/favicon.ico"
188
189html_use_index = True
190html_domain_indices = True
191
192
193rst_prolog = """
194.. |sphinx| image:: /images/documentation.png
195.. |yaml| image:: /images/yaml_avatar.png
196.. |JsonSchema| image:: /images/json_schema_avatar.png
197.. |eb| image:: /images/executable_book_avatar.png
198.. |yed| image:: /images/yed_avatar.png
199.. |vrt| image:: /images/vrt_avatar.png
200.. |arsouilles| image:: /images/arsouilles_avatar.png
201.. |FluxWeb| image:: /images/rss_avatar.webp
202"""
203copyright = f"2018-{now.year}, {author} Built with sphinx {sphinx.__version__} Python {platform.python_version()}"