Skip to content

Commit 7c14437

Browse files
authored
Merge pull request #10186 from ultmaster/rst-get-language-patch
Patch rst get language in docutils
2 parents 79d8e4e + 7f660ab commit 7c14437

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

sphinx/util/docutils.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,30 @@ def patched_get_language(language_code: str, reporter: Reporter = None) -> Any:
135135
docutils.languages.get_language = get_language
136136

137137

138+
@contextmanager
139+
def patched_rst_get_language() -> Generator[None, None, None]:
140+
"""Patch docutils.parsers.rst.languages.get_language().
141+
Starting from docutils 0.17, get_language() in ``rst.languages``
142+
also has a reporter, which needs to be disabled temporarily.
143+
144+
This should also work for old versions of docutils,
145+
because reporter is none by default.
146+
147+
refs: https://github.com/sphinx-doc/sphinx/issues/10179
148+
"""
149+
from docutils.parsers.rst.languages import get_language
150+
151+
def patched_get_language(language_code: str, reporter: Reporter = None) -> Any:
152+
return get_language(language_code)
153+
154+
try:
155+
docutils.parsers.rst.languages.get_language = patched_get_language
156+
yield
157+
finally:
158+
# restore original implementations
159+
docutils.parsers.rst.languages.get_language = get_language
160+
161+
138162
@contextmanager
139163
def using_user_docutils_conf(confdir: Optional[str]) -> Generator[None, None, None]:
140164
"""Let docutils know the location of ``docutils.conf`` for Sphinx."""
@@ -154,7 +178,7 @@ def using_user_docutils_conf(confdir: Optional[str]) -> Generator[None, None, No
154178
@contextmanager
155179
def patch_docutils(confdir: Optional[str] = None) -> Generator[None, None, None]:
156180
"""Patch to docutils temporarily."""
157-
with patched_get_language(), using_user_docutils_conf(confdir):
181+
with patched_get_language(), patched_rst_get_language(), using_user_docutils_conf(confdir):
158182
yield
159183

160184

0 commit comments

Comments
 (0)