@@ -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
139163def 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
155179def 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