From 0447fbe60d69c4cf619b35e6950a0b8c57c9c221 Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+AA-Turner@users.noreply.github.com> Date: Fri, 22 Apr 2022 03:10:43 +0100 Subject: [PATCH] Use docutils.__version_info__ directly --- sphinx/addnodes.py | 4 +--- sphinx/transforms/__init__.py | 3 ++- sphinx/util/docutils.py | 7 ++----- sphinx/util/smartypants.py | 2 +- tests/test_api_translator.py | 3 +-- tests/test_build_html.py | 3 ++- tests/test_ext_graphviz.py | 2 +- tests/test_ext_inheritance_diagram.py | 2 +- tests/test_intl.py | 2 +- tests/test_markup.py | 3 ++- tests/test_smartquotes.py | 3 +-- 11 files changed, 15 insertions(+), 19 deletions(-) diff --git a/sphinx/addnodes.py b/sphinx/addnodes.py index bf74bd1aa..0a4a079da 100644 --- a/sphinx/addnodes.py +++ b/sphinx/addnodes.py @@ -2,6 +2,7 @@ from typing import TYPE_CHECKING, Any, Dict, List, Sequence +import docutils from docutils import nodes from docutils.nodes import Element @@ -28,7 +29,6 @@ class document(nodes.document): def set_id(self, node: Element, msgnode: Element = None, suggested_prefix: str = '') -> str: - from sphinx.util import docutils if docutils.__version_info__ >= (0, 16): ret = super().set_id(node, msgnode, suggested_prefix) # type: ignore else: @@ -527,8 +527,6 @@ class manpage(nodes.Inline, nodes.FixedTextElement): def setup(app: "Sphinx") -> Dict[str, Any]: - from sphinx.util import docutils # lazy import - app.add_node(toctree) app.add_node(desc) diff --git a/sphinx/transforms/__init__.py b/sphinx/transforms/__init__.py index a2a592221..083fe2b9d 100644 --- a/sphinx/transforms/__init__.py +++ b/sphinx/transforms/__init__.py @@ -5,6 +5,7 @@ import unicodedata import warnings from typing import TYPE_CHECKING, Any, Dict, Generator, List, Optional, Tuple, cast +import docutils from docutils import nodes from docutils.nodes import Element, Node, Text from docutils.transforms import Transform, Transformer @@ -17,7 +18,7 @@ from sphinx import addnodes from sphinx.config import Config from sphinx.deprecation import RemovedInSphinx60Warning from sphinx.locale import _, __ -from sphinx.util import docutils, logging +from sphinx.util import logging from sphinx.util.docutils import new_document from sphinx.util.i18n import format_date from sphinx.util.nodes import NodeMatcher, apply_source_workaround, is_smartquotable diff --git a/sphinx/util/docutils.py b/sphinx/util/docutils.py index e46525183..ac920da77 100644 --- a/sphinx/util/docutils.py +++ b/sphinx/util/docutils.py @@ -17,7 +17,6 @@ from docutils.parsers.rst import Directive, directives, roles from docutils.parsers.rst.states import Inliner from docutils.statemachine import State, StateMachine, StringList from docutils.utils import Reporter, unescape -from packaging import version from sphinx.errors import SphinxError from sphinx.locale import _, __ @@ -32,8 +31,6 @@ if TYPE_CHECKING: from sphinx.config import Config from sphinx.environment import BuildEnvironment - -__version_info__ = version.parse(docutils.__version__).release additional_nodes: Set[Type[Element]] = set() @@ -312,7 +309,7 @@ class NullReporter(Reporter): def is_html5_writer_available() -> bool: - return __version_info__ > (0, 13, 0) + return docutils.__version_info__ > (0, 13, 0) @contextmanager @@ -543,7 +540,7 @@ class SphinxTranslator(nodes.NodeVisitor): # Node.findall() is a new interface to traverse a doctree since docutils-0.18. # This applies a patch docutils-0.17 or older to be available Node.findall() # method to use it from our codebase. -if __version_info__ < (0, 18): +if docutils.__version_info__ < (0, 18): def findall(self, *args, **kwargs): return iter(self.traverse(*args, **kwargs)) diff --git a/sphinx/util/smartypants.py b/sphinx/util/smartypants.py index bc4171631..f05d6da58 100644 --- a/sphinx/util/smartypants.py +++ b/sphinx/util/smartypants.py @@ -27,10 +27,10 @@ import re import warnings from typing import Generator, Iterable, Tuple +from docutils import __version_info__ as docutils_version from docutils.utils import smartquotes from sphinx.deprecation import RemovedInSphinx60Warning -from sphinx.util.docutils import __version_info__ as docutils_version warnings.warn('sphinx.util.smartypants is deprecated.', RemovedInSphinx60Warning) diff --git a/tests/test_api_translator.py b/tests/test_api_translator.py index aad5a2ccc..25aee0c61 100644 --- a/tests/test_api_translator.py +++ b/tests/test_api_translator.py @@ -2,10 +2,9 @@ import sys +import docutils import pytest -from sphinx.util import docutils - @pytest.fixture(scope='module', autouse=True) def setup_module(rootdir): diff --git a/tests/test_build_html.py b/tests/test_build_html.py index 370f25d08..49b6528b4 100644 --- a/tests/test_build_html.py +++ b/tests/test_build_html.py @@ -5,6 +5,7 @@ import re from itertools import chain, cycle from unittest.mock import ANY, call, patch +import docutils import pygments import pytest from html5lib import HTMLParser @@ -13,7 +14,7 @@ from packaging import version from sphinx.builders.html import validate_html_extra_path, validate_html_static_path from sphinx.errors import ConfigError from sphinx.testing.util import strip_escseq -from sphinx.util import docutils, md5 +from sphinx.util import md5 from sphinx.util.inventory import InventoryFile if docutils.__version_info__ < (0, 17): diff --git a/tests/test_ext_graphviz.py b/tests/test_ext_graphviz.py index 7ffe7ead2..c5349d0fa 100644 --- a/tests/test_ext_graphviz.py +++ b/tests/test_ext_graphviz.py @@ -2,10 +2,10 @@ import re +import docutils import pytest from sphinx.ext.graphviz import ClickableMapDefinition -from sphinx.util import docutils @pytest.mark.sphinx('html', testroot='ext-graphviz') diff --git a/tests/test_ext_inheritance_diagram.py b/tests/test_ext_inheritance_diagram.py index a6218eccc..ea7162017 100644 --- a/tests/test_ext_inheritance_diagram.py +++ b/tests/test_ext_inheritance_diagram.py @@ -4,11 +4,11 @@ import os import re import sys +import docutils import pytest from sphinx.ext.inheritance_diagram import (InheritanceDiagram, InheritanceException, import_classes) -from sphinx.util import docutils @pytest.mark.sphinx(buildername="html", testroot="inheritance") diff --git a/tests/test_intl.py b/tests/test_intl.py index d71521b00..37a64cc09 100644 --- a/tests/test_intl.py +++ b/tests/test_intl.py @@ -6,6 +6,7 @@ Runs the text builder in the test root. import os import re +import docutils import pygments import pytest from babel.messages import mofile, pofile @@ -15,7 +16,6 @@ from docutils import nodes from sphinx import locale from sphinx.testing.util import (assert_node, assert_not_re_search, assert_re_search, assert_startswith, etree_parse, path, strip_escseq) -from sphinx.util import docutils sphinx_intl = pytest.mark.sphinx( testroot='intl', diff --git a/tests/test_markup.py b/tests/test_markup.py index a97239846..9e6165a5f 100644 --- a/tests/test_markup.py +++ b/tests/test_markup.py @@ -3,6 +3,7 @@ import re import warnings +import docutils import pytest from docutils import frontend, nodes, utils from docutils.parsers.rst import Parser as RstParser @@ -14,7 +15,7 @@ from sphinx.environment import default_settings from sphinx.roles import XRefRole from sphinx.testing.util import Struct, assert_node from sphinx.transforms import SphinxSmartQuotes -from sphinx.util import docutils, texescape +from sphinx.util import texescape from sphinx.util.docutils import sphinx_domains from sphinx.writers.html import HTMLTranslator, HTMLWriter from sphinx.writers.latex import LaTeXTranslator, LaTeXWriter diff --git a/tests/test_smartquotes.py b/tests/test_smartquotes.py index 835cf3cd4..4ac9574bf 100644 --- a/tests/test_smartquotes.py +++ b/tests/test_smartquotes.py @@ -1,10 +1,9 @@ """Test smart quotes.""" +import docutils import pytest from html5lib import HTMLParser -from sphinx.util import docutils - @pytest.mark.sphinx(buildername='html', testroot='smartquotes', freshenv=True) def test_basic(app, status, warning):