@@ -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
147171def 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
163187def 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