File fix-py314.patch of Package python-Markdown

From 15346cd3a73f108bf11c57907b32737f8365d6bd Mon Sep 17 00:00:00 2001
From: facelessuser <faceless.shop@gmail.com>
Date: Mon, 21 Jul 2025 08:56:43 -0600
Subject: [PATCH] Fix failing cases for Python 3.14

New change requires us to monkey patch `locatetagend` to prevent
capturing incomplete tags in code spans.
---
 docs/changelog.md      |    6 ++++++
 markdown/htmlparser.py |   14 ++++++++++++++
 2 files changed, 20 insertions(+)

Index: markdown-3.8.2/docs/changelog.md
===================================================================
--- markdown-3.8.2.orig/docs/changelog.md	2025-06-19 19:12:28.000000000 +0200
+++ markdown-3.8.2/docs/changelog.md	2025-08-12 21:13:46.980036183 +0200
@@ -10,6 +10,12 @@
 [Python Version Specification]: https://packaging.python.org/en/latest/specifications/version-specifiers/.
 See the [Contributing Guide](contributing.md) for details.
 
+## [Unreleased]
+
+### Fixed
+
+* Fix handling of incomplete HTML tags in code spans in Python 3.14.
+
 ## [3.8.2] - 2025-06-19
 
 ### Fixed
Index: markdown-3.8.2/markdown/htmlparser.py
===================================================================
--- markdown-3.8.2.orig/markdown/htmlparser.py	2025-06-19 19:12:28.000000000 +0200
+++ markdown-3.8.2/markdown/htmlparser.py	2025-08-12 21:13:46.980214669 +0200
@@ -69,6 +69,20 @@
    )?
   \s*                                 # trailing whitespace
 """, re.VERBOSE)
+htmlparser.locatetagend = re.compile(r"""
+  [a-zA-Z][^`\t\n\r\f />]*           # tag name
+  [\t\n\r\f /]*                     # optional whitespace before attribute name
+  (?:(?<=['"\t\n\r\f /])[^`\t\n\r\f />][^\t\n\r\f /=>]*  # attribute name
+    (?:=                            # value indicator
+      (?:'[^']*'                    # LITA-enclosed value
+        |"[^"]*"                    # LIT-enclosed value
+        |(?!['"])[^>\t\n\r\f ]*     # bare value
+       )
+     )?
+    [\t\n\r\f /]*                   # possibly followed by a space
+   )*
+   >?
+""", re.VERBOSE)
 
 # Match a blank line at the start of a block of text (two newlines).
 # The newlines may be preceded by additional whitespace.
openSUSE Build Service is sponsored by