blob: a9873424f92206aea9392e6fa8c54155073a20d6 [file]
import os
import re
import sys
from pathlib import Path
from sphinx.application import Sphinx
sys.path.insert(0, os.path.abspath(".."))
project = "isort"
copyright = "2013-2026, Timothy Crosley"
author = "Timothy Crosley"
extensions = [
"myst_parser",
"sphinx_immaterial",
"sphinx.ext.autodoc",
"sphinx.ext.intersphinx",
"sphinx.ext.napoleon",
"sphinx.ext.viewcode",
]
html_theme = "sphinx_immaterial"
html_title = "isort"
html_static_path = ["../art"]
html_logo = "../art/logo.png"
html_favicon = "../art/logo.png"
myst_heading_anchors = 2
intersphinx_mapping = {"python": ("https://docs.python.org/3", None)}
# To avoid a lot of errors about problems generating autodoc for the defaults, we ignore them.
autodoc_preserve_defaults = True
autodoc_default_options = {"members": True, "show-inheritance": True, "undoc-members": True}
html_theme_options = {
"site_url": "https://isort.readthedocs.io/",
"repo_url": "https://github.com/PyCQA/isort/",
"repo_name": "isort",
"palette": {"primary": "deep-orange", "accent": "deep-orange"},
}
def _generate_includes(app: Sphinx) -> None:
"""Create Sphinx-friendly copies of some files at build time."""
# Use absolute paths based on this file's location
root_dir = Path(__file__).parent.absolute().parent
gen_dir = Path(__file__).parent.absolute() / "generated"
gen_dir.mkdir(parents=True, exist_ok=True)
for file in ("CHANGELOG.md", "README.md"):
content = (root_dir / file).read_text(encoding="utf-8")
content = re.sub(r"\]\(docs/(.*?)\.md\)", r"](../\1)", content)
(gen_dir / file).write_text(content, encoding="utf-8")
def setup(app: Sphinx) -> None:
"""Register build hooks."""
app.connect("builder-inited", _generate_includes)