Skip to content

Commit 23f22f4

Browse files
committed
fix: fix build of html5lib by applying a patch
patch taken from html5lib/html5lib-python#594 issue html5lib/html5lib-python#593 Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
1 parent d81ba63 commit 23f22f4

2 files changed

Lines changed: 97 additions & 0 deletions

File tree

python-modules/html5lib/594.patch

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
From ba50563dce7968e53ac551ab5492b11301e7c83e Mon Sep 17 00:00:00 2001
2+
From: loqs <loqs@users.noreply.github.com>
3+
Date: Mon, 16 Mar 2026 22:33:37 +0000
4+
Subject: [PATCH 1/2] setup.py: except ImportError for missing pkg_resources
5+
6+
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.
7+
---
8+
setup.py | 7 +++++--
9+
1 file changed, 5 insertions(+), 2 deletions(-)
10+
11+
diff --git a/setup.py b/setup.py
12+
index 30ee0575..0aa584d1 100644
13+
--- a/setup.py
14+
+++ b/setup.py
15+
@@ -6,9 +6,12 @@
16+
17+
from os.path import join, dirname
18+
from setuptools import setup, find_packages, __version__ as setuptools_version
19+
-from pkg_resources import parse_version
20+
21+
-import pkg_resources
22+
+try:
23+
+ import pkg_resources
24+
+ from pkg_resources import parse_version
25+
+except ImportError:
26+
+ pkg_resources = None
27+
28+
try:
29+
import _markerlib.markers
30+
31+
From 41f8aa065909c1ee6297b05f156d271344f76b0e Mon Sep 17 00:00:00 2001
32+
From: loqs <loqs@users.noreply.github.com>
33+
Date: Mon, 16 Mar 2026 22:38:32 +0000
34+
Subject: [PATCH 2/2] conftest.py: Replace pkg_resources use with packaging
35+
36+
---
37+
html5lib/tests/conftest.py | 22 +++++++++++++---------
38+
requirements-test.txt | 2 ++
39+
2 files changed, 15 insertions(+), 9 deletions(-)
40+
41+
diff --git a/html5lib/tests/conftest.py b/html5lib/tests/conftest.py
42+
index fffeb50c..a1f6b21d 100644
43+
--- a/html5lib/tests/conftest.py
44+
+++ b/html5lib/tests/conftest.py
45+
@@ -2,7 +2,12 @@
46+
import os.path
47+
import sys
48+
49+
-import pkg_resources
50+
+from packaging.requirements import Requirement
51+
+from packaging.markers import Marker
52+
+try:
53+
+ from importlib import metadata
54+
+except ImportError:
55+
+ import importlib_metadata as metadata
56+
import pytest
57+
58+
from .tree_construction import TreeConstructionFile
59+
@@ -63,17 +68,16 @@ def pytest_configure(config):
60+
spec, marker = line.strip().split(";", 1)
61+
else:
62+
spec, marker = line.strip(), None
63+
- req = pkg_resources.Requirement.parse(spec)
64+
- if marker and not pkg_resources.evaluate_marker(marker):
65+
+ req = Requirement(spec)
66+
+ if marker and not Marker(marker).evaluate():
67+
msgs.append("%s not available in this environment" % spec)
68+
else:
69+
try:
70+
- installed = pkg_resources.working_set.find(req)
71+
- except pkg_resources.VersionConflict:
72+
- msgs.append("Outdated version of %s installed, need %s" % (req.name, spec))
73+
- else:
74+
- if not installed:
75+
- msgs.append("Need %s" % spec)
76+
+ installed = metadata.version(req.name)
77+
+ if not req.specifier.contains(installed, prereleases=True):
78+
+ msgs.append("Outdated version of %s installed, need %s" % (req.name, spec))
79+
+ except metadata.PackageNotFoundError:
80+
+ msgs.append("Need %s" % spec)
81+
82+
# Check cElementTree
83+
import xml.etree.ElementTree as ElementTree
84+
diff --git a/requirements-test.txt b/requirements-test.txt
85+
index aca31f5e..27943155 100644
86+
--- a/requirements-test.txt
87+
+++ b/requirements-test.txt
88+
@@ -8,3 +8,5 @@ coverage>=5.1,<6
89+
pytest-expect>=1.1.0,<2
90+
mock>=3.0.5,<4 ; python_version < '3.3'
91+
setuptools; python_version >= '3.12'
92+
+packaging
93+
+importlib-metadata; python_version < '3.8'
94+
\ No newline at end of file

python-modules/html5lib/html5lib.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ def setTargets(self):
88
self.svnTargets["master"] = ""
99
self.description = "html5lib is a pure-python library for parsing HTML. It is designed to conform to the WHATWG HTML specification, as is implemented by all major web browsers"
1010
self.defaultTarget = "master"
11+
self.patchToApply["master"] = [
12+
("594.patch", 1),
13+
]
1114

1215

1316
class Package(PipPackageBase):

0 commit comments

Comments
 (0)