Utilities/Sphinx: Avoid using deprecated sphinx APIs
Sphinx has deprecated `sphinx.util.pycompat.htmlescape` and `sphinx.builders.qthelp.QtHelpBuilder`. We only import these as part of a monkey-patch to work around a bug in versions of sphinx before 1.7.2, so make that code path conditional. The imports are not deprecated on the versions where we need them.
This commit is contained in:
parent
e0f643dddc
commit
2254fcb68f
@ -57,25 +57,6 @@ CMakeLexer.tokens["root"] = [
|
|||||||
# (r'[^<>\])\}\|$"# \t\n]+', Name.Exception), # fallback, for debugging only
|
# (r'[^<>\])\}\|$"# \t\n]+', Name.Exception), # fallback, for debugging only
|
||||||
]
|
]
|
||||||
|
|
||||||
# Monkey patch for sphinx generating invalid content for qcollectiongenerator
|
|
||||||
# https://bitbucket.org/birkenfeld/sphinx/issue/1435/qthelp-builder-should-htmlescape-keywords
|
|
||||||
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
|
|
||||||
|
|
||||||
|
|
||||||
from docutils.parsers.rst import Directive, directives
|
from docutils.parsers.rst import Directive, directives
|
||||||
from docutils.transforms import Transform
|
from docutils.transforms import Transform
|
||||||
try:
|
try:
|
||||||
@ -93,13 +74,36 @@ from sphinx.util.nodes import make_refnode
|
|||||||
from sphinx import addnodes
|
from sphinx import addnodes
|
||||||
|
|
||||||
sphinx_before_1_4 = False
|
sphinx_before_1_4 = False
|
||||||
|
sphinx_before_1_7_2 = False
|
||||||
try:
|
try:
|
||||||
from sphinx import version_info
|
from sphinx import version_info
|
||||||
if version_info < (1, 4):
|
if version_info < (1, 4):
|
||||||
sphinx_before_1_4 = True
|
sphinx_before_1_4 = True
|
||||||
|
if version_info < (1, 7, 2):
|
||||||
|
sphinx_before_1_7_2 = True
|
||||||
except ImportError:
|
except ImportError:
|
||||||
# The `sphinx.version_info` tuple was added in Sphinx v1.2:
|
# The `sphinx.version_info` tuple was added in Sphinx v1.2:
|
||||||
sphinx_before_1_4 = True
|
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
|
||||||
|
|
||||||
class CMakeModule(Directive):
|
class CMakeModule(Directive):
|
||||||
required_arguments = 1
|
required_arguments = 1
|
||||||
|
Loading…
Reference in New Issue
Block a user