1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
import importlib.metadata
import re
from url import URL
GITHUB = URL.parse("https://github.com/")
HOMEPAGE = GITHUB / "python-jsonschema/referencing"
project = "referencing"
author = "Julian Berman"
copyright = f"2022, {author}"
release = importlib.metadata.version("referencing")
version = release.partition("-")[0]
language = "en"
default_role = "any"
extensions = [
"sphinx.ext.autodoc",
"sphinx.ext.autosectionlabel",
"sphinx.ext.coverage",
"sphinx.ext.doctest",
"sphinx.ext.extlinks",
"sphinx.ext.intersphinx",
"sphinx.ext.napoleon",
"sphinx.ext.todo",
"sphinx.ext.viewcode",
"sphinx_copybutton",
"sphinx_json_schema_spec",
"sphinxcontrib.spelling",
"sphinxext.opengraph",
]
pygments_style = "lovelace"
pygments_dark_style = "one-dark"
html_theme = "furo"
# See sphinx-doc/sphinx#10785
_TYPE_ALIASES = dict(
AnchorType=("class", "Anchor"),
D=("data", "D"),
ObjectSchema=("data", "ObjectSchema"),
Schema=("data", "Schema"),
URI=("attr", "URI"), # ?!?!?! Sphinx...
)
def _resolve_broken_refs(app, env, node, contnode):
if node["refdomain"] != "py":
return
if node["reftarget"].startswith("referencing.typing."):
kind, target = "data", node["reftarget"]
else:
kind, target = _TYPE_ALIASES.get(node["reftarget"], (None, None))
if kind is not None:
return app.env.get_domain("py").resolve_xref(
env,
node["refdoc"],
app.builder,
kind,
target,
node,
contnode,
)
def setup(app):
app.connect("missing-reference", _resolve_broken_refs)
def entire_domain(host):
return r"http.?://" + re.escape(host) + r"($|/.*)"
linkcheck_ignore = [
entire_domain("img.shields.io"),
f"{GITHUB}.*#.*",
str(HOMEPAGE / "actions"),
str(HOMEPAGE / "workflows/CI/badge.svg"),
]
# = Extensions =
# -- autodoc --
autodoc_default_options = {
"members": True,
"member-order": "bysource",
}
# -- autosectionlabel --
autosectionlabel_prefix_document = True
# -- intersphinx --
intersphinx_mapping = {
"hatch": ("https://hatch.pypa.io/latest/", None),
"jsonschema-specifications": (
"https://jsonschema-specifications.readthedocs.io/en/stable/",
None,
),
"regret": ("https://regret.readthedocs.io/en/stable/", None),
"python": ("https://docs.python.org/", None),
"setuptools": ("https://setuptools.pypa.io/en/stable/", None),
}
# -- extlinks --
extlinks = {
"gh": (str(HOMEPAGE) + "/%s", None),
"github": (str(GITHUB) + "/%s", None),
"hatch": ("https://hatch.pypa.io/latest/%s", None),
"httpx": ("https://www.python-httpx.org/%s", None),
}
extlinks_detect_hardcoded_links = True
# -- sphinx-copybutton --
copybutton_prompt_text = r">>> |\.\.\. |\$"
copybutton_prompt_is_regexp = True
# -- sphinxcontrib-spelling --
spelling_word_list_filename = "spelling-wordlist.txt"
spelling_show_suggestions = True
|