Skip to content

Commit

Permalink
Merge pull request #10186 from ultmaster/rst-get-language-patch
Browse files Browse the repository at this point in the history
Patch rst get language in docutils
  • Loading branch information
tk0miya committed Mar 20, 2022
2 parents 79d8e4e + 7f660ab commit 7c14437
Showing 1 changed file with 25 additions and 1 deletion.
26 changes: 25 additions & 1 deletion sphinx/util/docutils.py
Expand Up @@ -135,6 +135,30 @@ def patched_get_language(language_code: str, reporter: Reporter = None) -> Any:
docutils.languages.get_language = get_language


@contextmanager
def patched_rst_get_language() -> Generator[None, None, None]:
"""Patch docutils.parsers.rst.languages.get_language().
Starting from docutils 0.17, get_language() in ``rst.languages``
also has a reporter, which needs to be disabled temporarily.
This should also work for old versions of docutils,
because reporter is none by default.
refs: https://github.com/sphinx-doc/sphinx/issues/10179
"""
from docutils.parsers.rst.languages import get_language

def patched_get_language(language_code: str, reporter: Reporter = None) -> Any:
return get_language(language_code)

try:
docutils.parsers.rst.languages.get_language = patched_get_language
yield
finally:
# restore original implementations
docutils.parsers.rst.languages.get_language = get_language


@contextmanager
def using_user_docutils_conf(confdir: Optional[str]) -> Generator[None, None, None]:
"""Let docutils know the location of ``docutils.conf`` for Sphinx."""
Expand All @@ -154,7 +178,7 @@ def using_user_docutils_conf(confdir: Optional[str]) -> Generator[None, None, No
@contextmanager
def patch_docutils(confdir: Optional[str] = None) -> Generator[None, None, None]:
"""Patch to docutils temporarily."""
with patched_get_language(), using_user_docutils_conf(confdir):
with patched_get_language(), patched_rst_get_language(), using_user_docutils_conf(confdir):
yield


Expand Down

0 comments on commit 7c14437

Please sign in to comment.