diff --git a/pyproject.toml b/pyproject.toml index 943771c..7103a39 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,6 +13,7 @@ requires-python = ">=3.6" requires = [ "sphinx", "requests>=2.4.2", + "importlib_metadata; python_version < '3.8'", ] [tool.flit.metadata.requires-extra] diff --git a/setup.py b/setup.py index a2aa298..b2f5661 100644 --- a/setup.py +++ b/setup.py @@ -23,7 +23,8 @@ install_requires=[ "sphinx", "requests>=2.4.2", - "pyyaml" + "pyyaml", + "importlib_metadata; python_version < '3.8'", ], extras_require={ "code": ["black", "flake8", "mypy"], diff --git a/sphinxcontrib/kroki/__init__.py b/sphinxcontrib/kroki/__init__.py index 9bf6724..b1e8649 100644 --- a/sphinxcontrib/kroki/__init__.py +++ b/sphinxcontrib/kroki/__init__.py @@ -10,9 +10,15 @@ from sphinx.application import Sphinx from .kroki import Kroki from .transform import KrokiToImageTransform -import pkg_resources -__version__ = pkg_resources.get_distribution("sphinxcontrib-kroki").version +# Python >=3.8 provides importlib.metadata in stdlib. +# Keep a backport fallback for supported Python 3.6/3.7. +try: + from importlib.metadata import version as _dist_version +except ImportError: # pragma: no cover + from importlib_metadata import version as _dist_version # type: ignore + +__version__ = _dist_version("sphinxcontrib-kroki") def setup(app: Sphinx) -> Dict[str, Any]: diff --git a/tests/conftest.py b/tests/conftest.py index 2e506d2..c8baa39 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,11 +1,11 @@ import os import shutil +from pathlib import Path import docutils import pytest import sphinx -from sphinx.testing.path import path pytest_plugins = "sphinx.testing.fixtures" @@ -15,7 +15,7 @@ @pytest.fixture(scope="session") def rootdir(): - return path(__file__).parent.abspath() / "fixtures" + return Path(__file__).resolve().parent / "fixtures" def pytest_report_header(config): diff --git a/tests/test_kroki.py b/tests/test_kroki.py index 040e56c..4b95a35 100644 --- a/tests/test_kroki.py +++ b/tests/test_kroki.py @@ -7,14 +7,15 @@ import re import pytest from sphinx.application import Sphinx -from sphinx.testing.path import path def get_content(app: Sphinx) -> str: app.builder.build_all() index = app.outdir / "index.html" - return index.read_text() if "read_text" in path.__dict__ else index.text() + if hasattr(index, "read_text"): + return index.read_text(encoding="utf-8") + return index.text() @pytest.mark.sphinx( @@ -45,5 +46,8 @@ def test_kroki_html(app, status, warning): ) assert re.search(html, content, re.S) - html = r'' + html = ( + r']*class="(?=[^"]*\bkroki\b)' + r'(?=[^"]*\bkroki-ditaa\b)(?=[^"]*\balign-right\b)[^"]*"[^>]*/>' + ) assert re.search(html, content, re.S)