From a8827f3329fc47064a6542825c8248cc5dc6b8ba Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+AA-Turner@users.noreply.github.com> Date: Fri, 22 Apr 2022 02:53:25 +0100 Subject: [PATCH] Catch `DeprecationWarning` for `docutils.frontend.OptionParser` --- sphinx/builders/html/__init__.py | 13 +++++++++---- sphinx/builders/latex/__init__.py | 13 +++++++++---- sphinx/builders/manpage.py | 13 +++++++++---- sphinx/builders/texinfo.py | 13 +++++++++---- tests/test_markup.py | 11 ++++++++--- tests/test_search.py | 7 ++++++- tests/test_util_nodes.py | 9 +++++++-- 7 files changed, 57 insertions(+), 22 deletions(-) diff --git a/sphinx/builders/html/__init__.py b/sphinx/builders/html/__init__.py index 11d5a58b4..3f4ea569f 100644 --- a/sphinx/builders/html/__init__.py +++ b/sphinx/builders/html/__init__.py @@ -5,6 +5,7 @@ import os import posixpath import re import sys +import warnings from datetime import datetime from os import path from typing import IO, Any, Dict, Iterable, Iterator, List, Optional, Set, Tuple, Type @@ -443,10 +444,14 @@ class StandaloneHTMLBuilder(Builder): self.load_indexer(docnames) self.docwriter = HTMLWriter(self) - self.docsettings: Any = OptionParser( - defaults=self.env.settings, - components=(self.docwriter,), - read_config_files=True).get_default_values() + with warnings.catch_warnings(): + warnings.filterwarnings('ignore', category=DeprecationWarning) + # DeprecationWarning: The frontend.OptionParser class will be replaced + # by a subclass of argparse.ArgumentParser in Docutils 0.21 or later. + self.docsettings: Any = OptionParser( + defaults=self.env.settings, + components=(self.docwriter,), + read_config_files=True).get_default_values() self.docsettings.compact_lists = bool(self.config.html_compact_lists) # determine the additional indices to include diff --git a/sphinx/builders/latex/__init__.py b/sphinx/builders/latex/__init__.py index d4fc66177..f1611ca80 100644 --- a/sphinx/builders/latex/__init__.py +++ b/sphinx/builders/latex/__init__.py @@ -1,6 +1,7 @@ """LaTeX builder.""" import os +import warnings from os import path from typing import Any, Dict, Iterable, List, Tuple, Union @@ -250,10 +251,14 @@ class LaTeXBuilder(Builder): def write(self, *ignored: Any) -> None: docwriter = LaTeXWriter(self) - docsettings: Any = OptionParser( - defaults=self.env.settings, - components=(docwriter,), - read_config_files=True).get_default_values() + with warnings.catch_warnings(): + warnings.filterwarnings('ignore', category=DeprecationWarning) + # DeprecationWarning: The frontend.OptionParser class will be replaced + # by a subclass of argparse.ArgumentParser in Docutils 0.21 or later. + docsettings: Any = OptionParser( + defaults=self.env.settings, + components=(docwriter,), + read_config_files=True).get_default_values() self.init_document_data() self.write_stylesheet() diff --git a/sphinx/builders/manpage.py b/sphinx/builders/manpage.py index cc6fc1fbe..ad1138c2c 100644 --- a/sphinx/builders/manpage.py +++ b/sphinx/builders/manpage.py @@ -1,5 +1,6 @@ """Manual pages builder.""" +import warnings from os import path from typing import Any, Dict, List, Set, Tuple, Union @@ -45,10 +46,14 @@ class ManualPageBuilder(Builder): @progress_message(__('writing')) def write(self, *ignored: Any) -> None: docwriter = ManualPageWriter(self) - docsettings: Any = OptionParser( - defaults=self.env.settings, - components=(docwriter,), - read_config_files=True).get_default_values() + with warnings.catch_warnings(): + warnings.filterwarnings('ignore', category=DeprecationWarning) + # DeprecationWarning: The frontend.OptionParser class will be replaced + # by a subclass of argparse.ArgumentParser in Docutils 0.21 or later. + docsettings: Any = OptionParser( + defaults=self.env.settings, + components=(docwriter,), + read_config_files=True).get_default_values() for info in self.config.man_pages: docname, name, description, authors, section = info diff --git a/sphinx/builders/texinfo.py b/sphinx/builders/texinfo.py index 24a19b0df..d506d2121 100644 --- a/sphinx/builders/texinfo.py +++ b/sphinx/builders/texinfo.py @@ -1,6 +1,7 @@ """Texinfo builder.""" import os +import warnings from os import path from typing import Any, Dict, Iterable, List, Tuple, Union @@ -101,10 +102,14 @@ class TexinfoBuilder(Builder): with progress_message(__("writing")): self.post_process_images(doctree) docwriter = TexinfoWriter(self) - settings: Any = OptionParser( - defaults=self.env.settings, - components=(docwriter,), - read_config_files=True).get_default_values() + with warnings.catch_warnings(): + warnings.filterwarnings('ignore', category=DeprecationWarning) + # DeprecationWarning: The frontend.OptionParser class will be replaced + # by a subclass of argparse.ArgumentParser in Docutils 0.21 or later. + settings: Any = OptionParser( + defaults=self.env.settings, + components=(docwriter,), + read_config_files=True).get_default_values() settings.author = author settings.title = title settings.texinfo_filename = targetname[:-5] + '.info' diff --git a/tests/test_markup.py b/tests/test_markup.py index 8800f5499..a97239846 100644 --- a/tests/test_markup.py +++ b/tests/test_markup.py @@ -1,6 +1,7 @@ """Test various Sphinx-specific markup extensions.""" import re +import warnings import pytest from docutils import frontend, nodes, utils @@ -22,9 +23,13 @@ from sphinx.writers.latex import LaTeXTranslator, LaTeXWriter @pytest.fixture def settings(app): texescape.init() # otherwise done by the latex builder - optparser = frontend.OptionParser( - components=(RstParser, HTMLWriter, LaTeXWriter), - defaults=default_settings) + with warnings.catch_warnings(): + warnings.filterwarnings('ignore', category=DeprecationWarning) + # DeprecationWarning: The frontend.OptionParser class will be replaced + # by a subclass of argparse.ArgumentParser in Docutils 0.21 or later. + optparser = frontend.OptionParser( + components=(RstParser, HTMLWriter, LaTeXWriter), + defaults=default_settings) settings = optparser.get_default_values() settings.smart_quotes = True settings.env = app.builder.env diff --git a/tests/test_search.py b/tests/test_search.py index 024e6941c..88c77c75e 100644 --- a/tests/test_search.py +++ b/tests/test_search.py @@ -1,5 +1,6 @@ """Test the search index builder.""" +import warnings from collections import namedtuple from io import BytesIO @@ -27,7 +28,11 @@ settings = parser = None def setup_module(): global settings, parser - optparser = frontend.OptionParser(components=(rst.Parser,)) + with warnings.catch_warnings(): + warnings.filterwarnings('ignore', category=DeprecationWarning) + # DeprecationWarning: The frontend.OptionParser class will be replaced + # by a subclass of argparse.ArgumentParser in Docutils 0.21 or later. + optparser = frontend.OptionParser(components=(rst.Parser,)) settings = optparser.get_default_values() parser = rst.Parser() diff --git a/tests/test_util_nodes.py b/tests/test_util_nodes.py index 031569d4c..14dcdcd58 100644 --- a/tests/test_util_nodes.py +++ b/tests/test_util_nodes.py @@ -1,4 +1,5 @@ """Tests uti.nodes functions.""" +import warnings from textwrap import dedent from typing import Any @@ -17,8 +18,12 @@ def _transform(doctree): def create_new_document(): - settings = frontend.OptionParser( - components=(rst.Parser,)).get_default_values() + with warnings.catch_warnings(): + warnings.filterwarnings('ignore', category=DeprecationWarning) + # DeprecationWarning: The frontend.OptionParser class will be replaced + # by a subclass of argparse.ArgumentParser in Docutils 0.21 or later. + settings = frontend.OptionParser( + components=(rst.Parser,)).get_default_values() settings.id_prefix = 'id' document = new_document('dummy.txt', settings) return document