diff --git a/html5lib/tests/conftest.py b/html5lib/tests/conftest.py index fffeb50c..a1f6b21d 100644 --- a/html5lib/tests/conftest.py +++ b/html5lib/tests/conftest.py @@ -2,7 +2,12 @@ import os.path import sys -import pkg_resources +from packaging.requirements import Requirement +from packaging.markers import Marker +try: + from importlib import metadata +except ImportError: + import importlib_metadata as metadata import pytest from .tree_construction import TreeConstructionFile @@ -63,17 +68,16 @@ def pytest_configure(config): spec, marker = line.strip().split(";", 1) else: spec, marker = line.strip(), None - req = pkg_resources.Requirement.parse(spec) - if marker and not pkg_resources.evaluate_marker(marker): + req = Requirement(spec) + if marker and not Marker(marker).evaluate(): msgs.append("%s not available in this environment" % spec) else: try: - installed = pkg_resources.working_set.find(req) - except pkg_resources.VersionConflict: - msgs.append("Outdated version of %s installed, need %s" % (req.name, spec)) - else: - if not installed: - msgs.append("Need %s" % spec) + installed = metadata.version(req.name) + if not req.specifier.contains(installed, prereleases=True): + msgs.append("Outdated version of %s installed, need %s" % (req.name, spec)) + except metadata.PackageNotFoundError: + msgs.append("Need %s" % spec) # Check cElementTree import xml.etree.ElementTree as ElementTree diff --git a/requirements-test.txt b/requirements-test.txt index aca31f5e..27943155 100644 --- a/requirements-test.txt +++ b/requirements-test.txt @@ -8,3 +8,5 @@ coverage>=5.1,<6 pytest-expect>=1.1.0,<2 mock>=3.0.5,<4 ; python_version < '3.3' setuptools; python_version >= '3.12' +packaging +importlib-metadata; python_version < '3.8' \ No newline at end of file diff --git a/setup.py b/setup.py index 30ee0575..0aa584d1 100644 --- a/setup.py +++ b/setup.py @@ -6,9 +6,12 @@ from os.path import join, dirname from setuptools import setup, find_packages, __version__ as setuptools_version -from pkg_resources import parse_version -import pkg_resources +try: + import pkg_resources + from pkg_resources import parse_version +except ImportError: + pkg_resources = None try: import _markerlib.markers