diff --git a/sphinx/highlighting.py b/sphinx/highlighting.py index 329561df0ca..addd0d45ca3 100644 --- a/sphinx/highlighting.py +++ b/sphinx/highlighting.py @@ -8,11 +8,11 @@ :license: BSD, see LICENSE for details. """ -from distutils.version import LooseVersion from functools import partial from importlib import import_module from typing import Any, Dict +from packaging import version from pygments import __version__ as pygmentsversion from pygments import highlight from pygments.filters import ErrorToken @@ -64,7 +64,7 @@ {\let\fcolorbox\spx@fixpyg@fcolorbox\PYG@do{#2}}} \makeatother ''' -if tuple(LooseVersion(pygmentsversion).version) <= (2, 7, 4): +if version.parse(pygmentsversion).release <= (2, 7, 4): _LATEX_ADD_STYLES += _LATEX_ADD_STYLES_FIXPYG diff --git a/sphinx/util/docutils.py b/sphinx/util/docutils.py index 047a0faa6f4..c3d38530690 100644 --- a/sphinx/util/docutils.py +++ b/sphinx/util/docutils.py @@ -12,7 +12,6 @@ import re from contextlib import contextmanager from copy import copy -from distutils.version import LooseVersion from os import path from types import ModuleType from typing import (IO, TYPE_CHECKING, Any, Callable, Dict, Generator, List, Optional, Set, @@ -26,6 +25,7 @@ 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 _ @@ -41,7 +41,7 @@ from sphinx.environment import BuildEnvironment -__version_info__ = tuple(LooseVersion(docutils.__version__).version) +__version_info__ = version.parse(docutils.__version__).release additional_nodes: Set[Type[Element]] = set() diff --git a/tests/test_build_html.py b/tests/test_build_html.py index 2e9a43f51cd..106ad047009 100644 --- a/tests/test_build_html.py +++ b/tests/test_build_html.py @@ -10,13 +10,13 @@ import os import re -from distutils.version import LooseVersion from itertools import chain, cycle from unittest.mock import ANY, call, patch import pygments import pytest from html5lib import HTMLParser +from packaging import version from sphinx.builders.html import validate_html_extra_path, validate_html_static_path from sphinx.errors import ConfigError @@ -30,6 +30,9 @@ FIGURE_CAPTION = ".//figure/figcaption/p" +PYGMENTS_VERSION = version.parse(pygments.__version__).release + + ENV_WARNINGS = """\ %(root)s/autodoc_fodder.py:docstring of autodoc_fodder.MarkupError:\\d+: \ WARNING: Explicit markup ends without a blank line; unexpected unindent. @@ -1576,8 +1579,7 @@ def test_html_codeblock_linenos_style_table(app): app.build() content = (app.outdir / 'index.html').read_text() - pygments_version = tuple(LooseVersion(pygments.__version__).version) - if pygments_version >= (2, 8): + if PYGMENTS_VERSION >= (2, 8): assert ('
1\n'
                 '2\n'
                 '3\n'
@@ -1592,8 +1594,7 @@ def test_html_codeblock_linenos_style_inline(app):
     app.build()
     content = (app.outdir / 'index.html').read_text()
 
-    pygments_version = tuple(LooseVersion(pygments.__version__).version)
-    if pygments_version > (2, 7):
+    if PYGMENTS_VERSION > (2, 7):
         assert '1' in content
     else:
         assert '1 ' in content