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
andrelease
variables.Set the project name and author name.
Setup a project logo.
Set the default style to
sphinx
ordefault
. 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()}"