Coverage for structured_tutorials / sphinx / __init__.py: 100%
17 statements
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-26 12:41 +0100
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-26 12:41 +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("structured_tutorials_root", Path(app.srcdir), "env", types=[Path])
20 app.add_config_value("structured_tutorials_command_text_width", 75, "env", types=[int])
21 app.add_config_value("structured_tutorials_context", {}, "env", types=[dict])
23 app.add_directive("structured-tutorial", TutorialDirective)
24 app.add_directive("structured-tutorial-part", PartDirective)
26 try:
27 app.setup_extension("sphinx_inline_tabs")
28 except Exception as exc: # pragma: no cover
29 raise ExtensionError("structured_tutorials requires sphinx_inline_tabs") from exc
31 # return metadata
32 return {
33 "version": __version__,
34 "parallel_read_safe": True,
35 "parallel_write_safe": True,
36 }