Skip to content

Commit 7f660ab

Browse files
committed
Patch rst get language in docutils
1 parent 4ba0568 commit 7f660ab

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
@@ -143,6 +143,30 @@ def patched_get_language(language_code: str, reporter: Reporter = None) -> Any:
143143
docutils.languages.get_language = get_language
144144

145145

146+
@contextmanager
147+
def patched_rst_get_language() -> Generator[None, None, None]:
148+
"""Patch docutils.parsers.rst.languages.get_language().
149+
Starting from docutils 0.17, get_language() in ``rst.languages``
150+
also has a reporter, which needs to be disabled temporarily.
151+
152+
This should also work for old versions of docutils,
153+
because reporter is none by default.
154+
155+
refs: https://github.com/sphinx-doc/sphinx/issues/10179
156+
"""
157+
from docutils.parsers.rst.languages import get_language
158+
159+
def patched_get_language(language_code: str, reporter: Reporter = None) -> Any:
160+
return get_language(language_code)
161+
162+
try:
163+
docutils.parsers.rst.languages.get_language = patched_get_language
164+
yield
165+
finally:
166+
# restore original implementations
167+
docutils.parsers.rst.languages.get_language = get_language
168+
169+
146170
@contextmanager
147171
def using_user_docutils_conf(confdir: Optional[str]) -> Generator[None, None, None]:
148172
"""Let docutils know the location of ``docutils.conf`` for Sphinx."""
@@ -162,7 +186,7 @@ def using_user_docutils_conf(confdir: Optional[str]) -> Generator[None, None, No
162186
@contextmanager
163187
def patch_docutils(confdir: Optional[str] = None) -> Generator[None, None, None]:
164188
"""Patch to docutils temporarily."""
165-
with patched_get_language(), using_user_docutils_conf(confdir):
189+
with patched_get_language(), patched_rst_get_language(), using_user_docutils_conf(confdir):
166190
yield
167191

168192

0 commit comments

Comments
 (0)