1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-19 19:43:23 +08:00

Utilities/Sphinx: Require Sphinx 2.x or later

Tweak our Sphinx extensions slightly to assert that Sphinx is at least
2.x. Remove hacks for older versions of Sphinx. This cleans up a bunch
of messy code and, more importantly, paves the way for consolidating our
import statements.
This commit is contained in:
Matthew Woehlke
2023-03-13 13:10:13 -04:00
parent 1ec4c65791
commit cef51925a4

View File

@@ -77,39 +77,13 @@ from sphinx.util.nodes import make_refnode
from sphinx.util import logging, ws_re
from sphinx import addnodes
import sphinx
# Require at least Sphinx 2.x.
assert sphinx.version_info >= (2,)
logger = logging.getLogger(__name__)
sphinx_before_1_4 = False
sphinx_before_1_7_2 = False
try:
from sphinx import version_info
if version_info < (1, 4):
sphinx_before_1_4 = True
if version_info < (1, 7, 2):
sphinx_before_1_7_2 = True
except ImportError:
# The `sphinx.version_info` tuple was added in Sphinx v1.2:
sphinx_before_1_4 = True
sphinx_before_1_7_2 = True
if sphinx_before_1_7_2:
# Monkey patch for sphinx generating invalid content for qcollectiongenerator
# https://github.com/sphinx-doc/sphinx/issues/1435
from sphinx.util.pycompat import htmlescape
from sphinx.builders.qthelp import QtHelpBuilder
old_build_keywords = QtHelpBuilder.build_keywords
def new_build_keywords(self, title, refs, subitems):
old_items = old_build_keywords(self, title, refs, subitems)
new_items = []
for item in old_items:
before, rest = item.split("ref=\"", 1)
ref, after = rest.split("\"")
if ("<" in ref and ">" in ref):
new_items.append(before + "ref=\"" + htmlescape(ref) + "\"" + after)
else:
new_items.append(item)
return new_items
QtHelpBuilder.build_keywords = new_build_keywords
@dataclass
class ObjectEntry:
@@ -194,11 +168,7 @@ class _cmake_index_entry:
self.desc = desc
def __call__(self, title, targetid, main = 'main'):
# See https://github.com/sphinx-doc/sphinx/issues/2673
if sphinx_before_1_4:
return ('pair', u'%s ; %s' % (self.desc, title), targetid, main)
else:
return ('pair', u'%s ; %s' % (self.desc, title), targetid, main, None)
return ('pair', u'%s ; %s' % (self.desc, title), targetid, main, None)
_cmake_index_objs = {
'command': _cmake_index_entry('command'),