commit: 42375327de2a9f151c8a6f5a9cfc0932dc88c840 Author: Sam James <sam <AT> gentoo <DOT> org> AuthorDate: Sun Nov 2 18:23:25 2025 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Sun Nov 2 18:24:19 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=42375327
dev-python/html5lib: fix build w/ py3.14 I guess setup.py run is run with an earlier Python impl if you have it, which is how neither of us noticed before. Closes: https://bugs.gentoo.org/965490 Signed-off-by: Sam James <sam <AT> gentoo.org> .../files/html5lib-1.2_pre20240221-py314.patch | 41 ++++++++++++++++++++++ .../html5lib/html5lib-1.2_pre20240221.ebuild | 4 +++ 2 files changed, 45 insertions(+) diff --git a/dev-python/html5lib/files/html5lib-1.2_pre20240221-py314.patch b/dev-python/html5lib/files/html5lib-1.2_pre20240221-py314.patch new file mode 100644 index 000000000000..785f77b04c59 --- /dev/null +++ b/dev-python/html5lib/files/html5lib-1.2_pre20240221-py314.patch @@ -0,0 +1,41 @@ +https://bugs.gentoo.org/965490 +https://github.com/html5lib/html5lib-python/pull/589 + +From b90dafff1bf342d34d539098013d0b9f318c7641 Mon Sep 17 00:00:00 2001 +From: Andrew Sukach <[email protected]> +Date: Fri, 12 Sep 2025 21:53:31 -0700 +Subject: [PATCH] `setup.py`: fix version parsing on Python 3.14 (ast.Str + removed) + +Python 3.14 removes the ast.Str node type. String literals now appear +as ast.Constant(value=str). +Update the AST check to accept both ast.Str (for older Pythons) and +ast.Constant with a string value (for Python 3.8+), allowing html5lib to +build successfully on Python 3.14 while remaining compatible with older +version. +--- + setup.py | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +diff --git a/setup.py b/setup.py +index 30ee0575..42ab6f67 100644 +--- a/setup.py ++++ b/setup.py +@@ -92,9 +92,14 @@ def default_environment(): + for a in assignments: + if (len(a.targets) == 1 and + isinstance(a.targets[0], ast.Name) and +- a.targets[0].id == "__version__" and +- isinstance(a.value, ast.Str)): +- version = a.value.s ++ a.targets[0].id == "__version__"): ++ if hasattr(ast, "Str") and isinstance(a.value, ast.Str): ++ version = a.value.s ++ elif (hasattr(ast, "Constant") ++ and isinstance(a.value, ast.Constant) ++ and isinstance(a.value.value, str)): ++ version = a.value.value ++assert version is not None + + setup(name='html5lib', + version=version, diff --git a/dev-python/html5lib/html5lib-1.2_pre20240221.ebuild b/dev-python/html5lib/html5lib-1.2_pre20240221.ebuild index acd43ad4fb38..5adb2e3ea77b 100644 --- a/dev-python/html5lib/html5lib-1.2_pre20240221.ebuild +++ b/dev-python/html5lib/html5lib-1.2_pre20240221.ebuild @@ -40,6 +40,10 @@ RDEPEND=" >=dev-python/webencodings-0.5.1[${PYTHON_USEDEP}] " +PATCHES=( + "${FILESDIR}"/${PN}-1.2_pre20240221-py314.patch +) + EPYTEST_PLUGINS=( pytest-expect ) distutils_enable_tests pytest
