From ba50563dce7968e53ac551ab5492b11301e7c83e Mon Sep 17 00:00:00 2001 From: loqs Date: Mon, 16 Mar 2026 22:33:37 +0000 Subject: [PATCH 1/2] setup.py: except ImportError for missing pkg_resources Missing pkg_resources indicates setuptools 82 or newer which is more recent that than 18.5 so the version check using pkg_resources can safely be skipped. --- setup.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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 From 41f8aa065909c1ee6297b05f156d271344f76b0e Mon Sep 17 00:00:00 2001 From: loqs Date: Mon, 16 Mar 2026 22:38:32 +0000 Subject: [PATCH 2/2] conftest.py: Replace pkg_resources use with packaging --- html5lib/tests/conftest.py | 22 +++++++++++++--------- requirements-test.txt | 2 ++ 2 files changed, 15 insertions(+), 9 deletions(-) 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