From ba50563dce7968e53ac551ab5492b11301e7c83e Mon Sep 17 00:00:00 2001
From: loqs <loqs@users.noreply.github.com>
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 e4534938cdf7408afab434e54c94997e3e6db662 Mon Sep 17 00:00:00 2001
From: loqs <loqs@users.noreply.github.com>
Date: Mon, 16 Mar 2026 22:38:32 +0000
Subject: [PATCH] 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 dad167c..f0f1b48 100644
--- a/html5lib/tests/conftest.py
+++ b/html5lib/tests/conftest.py
@@ -2,7 +2,12 @@ from __future__ import print_function
 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 703d0e6..c7af277 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.6'
 mock>=4.0.2,<5 ; python_version >= '3.6'
+packaging
+importlib-metadata; python_version < '3.8'
