diff --git a/python-html5lib.changes b/python-html5lib.changes
index 7d401ea..7784c44 100644
--- a/python-html5lib.changes
+++ b/python-html5lib.changes
@@ -1,3 +1,9 @@
+-------------------------------------------------------------------
+Tue Nov 4 00:18:04 UTC 2025 - Steve Kowalik
+
+- Add patch support-python314.patch:
+ * Don't use ast.Str to parse the version if it isn't available.
+
-------------------------------------------------------------------
Wed May 28 11:27:09 UTC 2025 - Markéta Machová
diff --git a/python-html5lib.spec b/python-html5lib.spec
index e96b79f..0a3019a 100644
--- a/python-html5lib.spec
+++ b/python-html5lib.spec
@@ -1,7 +1,7 @@
#
# spec file for package python-html5lib
#
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2025 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -30,9 +30,12 @@ Patch0: pytest6.patch
Patch1: python-html5lib-no-mock.patch
# PATCH-FIX-UPSTREAM https://github.com/html5lib/html5lib-python/pull/570 adapt testsuite to changes in pytest 7.4
Patch2: pytest74.patch
+# PATCH-FIX-UPSTREAM gh#html5lib/html5lib-python#589
+Patch3: support-python314.patch
BuildRequires: %{python_module Genshi}
BuildRequires: %{python_module lxml}
BuildRequires: %{python_module pip}
+BuildRequires: %{python_module pip}
BuildRequires: %{python_module pytest >= 4.0}
BuildRequires: %{python_module pytest-expect}
BuildRequires: %{python_module setuptools >= 18.5}
diff --git a/support-python314.patch b/support-python314.patch
new file mode 100644
index 0000000..6f2c717
--- /dev/null
+++ b/support-python314.patch
@@ -0,0 +1,38 @@
+From b90dafff1bf342d34d539098013d0b9f318c7641 Mon Sep 17 00:00:00 2001
+From: Andrew Sukach
+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,