| From b90dafff1bf342d34d539098013d0b9f318c7641 Mon Sep 17 00:00:00 2001 |
| From: Andrew Sukach <andrew@sukach.org> |
| 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. |
| |
| Upstream: https://github.com/html5lib/html5lib-python/pull/589 |
| |
| Signed-off-by: Bernd Kuhls <bernd@kuhls.net> |
| --- |
| 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, |