Coverage for structured_tutorials / sphinx / __init__.py: 100%
16 statements
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-21 19:08 +0100
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-21 19:08 +0100
1"""Sphinx extension for rendering tutorials."""
3from pathlib import Path
5from sphinx.application import Sphinx
6from sphinx.errors import ExtensionError
7from sphinx.util.typing import ExtensionMetadata
9from structured_tutorials import __version__
10from structured_tutorials.sphinx.directives import PartDirective, TutorialDirective
11from structured_tutorials.sphinx.utils import validate_configuration
14def setup(app: Sphinx) -> ExtensionMetadata:
15 """Sphinx setup function."""
16 # Add dependency on other extension:
17 # app.setup_extension("sphinx.ext.autodoc")
18 app.connect("config-inited", validate_configuration)
19 app.add_config_value("tutorial_root", Path(app.srcdir), "env", types=[Path])
20 app.add_config_value("structured_tutorial_command_text_width", 75, "env", types=[int])
22 app.add_directive("structured-tutorial", TutorialDirective)
23 app.add_directive("structured-tutorial-part", PartDirective)
25 try:
26 app.setup_extension("sphinx_inline_tabs")
27 except Exception as exc: # pragma: no cover
28 raise ExtensionError("structured_tutorials requires sphinx_inline_tabs") from exc
30 # return metadata
31 return {
32 "version": __version__,
33 "parallel_read_safe": True,
34 "parallel_write_safe": True,
35 }