summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorJulian Berman <Julian@GrayVines.com>2023-02-16 14:38:33 +0200
committerJulian Berman <Julian@GrayVines.com>2023-02-21 09:58:40 +0200
commitbdda72350321cca37b2eb64276d388fe441ca622 (patch)
treefeccca043eec9b27f6b1b7da4753375b671f77e6 /docs
parenta93e88befbda92ac953f1c4f8de0b07e546b852f (diff)
downloadjsonschema-bdda72350321cca37b2eb64276d388fe441ca622.tar.gz
Flail to get Sphinx to find references again.
Diffstat (limited to 'docs')
-rw-r--r--docs/conf.py28
1 files changed, 18 insertions, 10 deletions
diff --git a/docs/conf.py b/docs/conf.py
index 06d4a64..6b1fd0a 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -38,29 +38,36 @@ html_theme = "furo"
# See sphinx-doc/sphinx#10785
_TYPE_ALIASES = {
- "jsonschema._format._F", # format checkers
+ "jsonschema._format._F": ("data", "_F"),
}
-def _resolve_type_aliases(app, env, node, contnode):
- if (
- node["refdomain"] == "py"
- and node["reftype"] == "class"
- and node["reftarget"] in _TYPE_ALIASES
- ):
+def _resolve_broken_refs(app, env, node, contnode):
+ if node["refdomain"] != "py":
+ return
+
+ if node["reftarget"].startswith("referencing."): # :( :( :( :( :(
+ node["reftype"] = "data"
+ from sphinx.ext import intersphinx
+ return intersphinx.resolve_reference_in_inventory(
+ env, "referencing", node, contnode,
+ )
+
+ 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,
- "data",
- node["reftarget"],
+ kind,
+ target,
node,
contnode,
)
def setup(app):
- app.connect("missing-reference", _resolve_type_aliases)
+ app.connect("missing-reference", _resolve_broken_refs)
# = Builders =
@@ -116,6 +123,7 @@ autosectionlabel_prefix_document = True
intersphinx_mapping = {
"python": ("https://docs.python.org/3", None),
+ "referencing": ("https://referencing.readthedocs.io/en/stable/", None),
"ujs": ("https://json-schema.org/understanding-json-schema/", None),
}