https://github.com/html5lib/html5lib-python/pull/590

From b502a5e2b3048a996ada4c4246aafad99d3dd14c Mon Sep 17 00:00:00 2001
From: Steve Kowalik <steven@wedontsleep.org>
Date: Thu, 27 Nov 2025 10:44:40 +1100
Subject: [PATCH] Support pytest 9 changes

The old py.path arguments to the hook functions have been removed as of
pytest 9, switch to the shiny new pathlib ones.
---
 html5lib/tests/conftest.py | 18 +++++++++---------
 requirements-test.txt      |  2 +-
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/html5lib/tests/conftest.py b/html5lib/tests/conftest.py
index fffeb50c..4a97dc21 100644
--- a/html5lib/tests/conftest.py
+++ b/html5lib/tests/conftest.py
@@ -90,22 +90,22 @@ def pytest_configure(config):
         pytest.exit("\n".join(msgs))
 
 
-def pytest_collect_file(path, parent):
-    dir = os.path.abspath(path.dirname)
+def pytest_collect_file(file_path, parent):
+    dir = file_path.parent
     dir_and_parents = set()
     while dir not in dir_and_parents:
         dir_and_parents.add(dir)
-        dir = os.path.dirname(dir)
+        dir = dir.parent
 
     if _tree_construction in dir_and_parents:
-        if path.ext == ".dat":
-            return TreeConstructionFile.from_parent(parent, fspath=path)
+        if file_path.suffix == ".dat":
+            return TreeConstructionFile.from_parent(parent, path=file_path)
     elif _tokenizer in dir_and_parents:
-        if path.ext == ".test":
-            return TokenizerFile.from_parent(parent, fspath=path)
+        if file_path.suffix == ".test":
+            return TokenizerFile.from_parent(parent, path=file_path)
     elif _sanitizer_testdata in dir_and_parents:
-        if path.ext == ".dat":
-            return SanitizerFile.from_parent(parent, fspath=path)
+        if file_path.suffix == ".dat":
+            return SanitizerFile.from_parent(parent, path=file_path)
 
 
 # Tiny wrapper to allow .from_parent constructors on older pytest for PY27
diff --git a/requirements-test.txt b/requirements-test.txt
index aca31f5e..860f5af1 100644
--- a/requirements-test.txt
+++ b/requirements-test.txt
@@ -3,7 +3,7 @@
 flake8==3.9.2 ; python_version < '3.6'
 flake8>=5.0.4; python_version >= '3.6'
 pytest>=4.6.10,<5 ; python_version < '3'
-pytest>=5.4.2,<8 ; python_version >= '3'
+pytest>=7,<10 ; python_version >= '3'
 coverage>=5.1,<6
 pytest-expect>=1.1.0,<2
 mock>=3.0.5,<4 ; python_version < '3.3'

