diff --git a/CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch b/CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch
index fe65839..d687e02 100644
--- a/CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch
+++ b/CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch
@@ -4,9 +4,11 @@
Lib/test/test_xml_etree.py | 10 ++++++++++
3 files changed, 17 insertions(+)
---- a/Lib/test/test_pyexpat.py
-+++ b/Lib/test/test_pyexpat.py
-@@ -791,6 +791,10 @@ class ReparseDeferralTest(unittest.TestC
+Index: Python-3.14.0b4/Lib/test/test_pyexpat.py
+===================================================================
+--- Python-3.14.0b4.orig/Lib/test/test_pyexpat.py 2025-07-09 07:53:01.180304305 +0200
++++ Python-3.14.0b4/Lib/test/test_pyexpat.py 2025-07-09 07:55:44.221539903 +0200
+@@ -791,6 +791,10 @@
self.assertEqual(started, ['doc'])
def test_reparse_deferral_disabled(self):
@@ -17,9 +19,11 @@
started = []
def start_element(name, _):
---- a/Lib/test/test_sax.py
-+++ b/Lib/test/test_sax.py
-@@ -1241,6 +1241,9 @@ class ExpatReaderTest(XmlTestBase):
+Index: Python-3.14.0b4/Lib/test/test_sax.py
+===================================================================
+--- Python-3.14.0b4.orig/Lib/test/test_sax.py 2025-07-09 07:53:01.235965215 +0200
++++ Python-3.14.0b4/Lib/test/test_sax.py 2025-07-09 07:55:44.222266328 +0200
+@@ -1241,6 +1241,9 @@
self.assertEqual(result.getvalue(), start + b"")
@@ -29,9 +33,11 @@
def test_flush_reparse_deferral_disabled(self):
result = BytesIO()
xmlgen = XMLGenerator(result)
---- a/Lib/test/test_xml_etree.py
-+++ b/Lib/test/test_xml_etree.py
-@@ -138,6 +138,11 @@ def equal_wrapper(cls):
+Index: Python-3.14.0b4/Lib/test/test_xml_etree.py
+===================================================================
+--- Python-3.14.0b4.orig/Lib/test/test_xml_etree.py 2025-07-09 07:53:01.649732434 +0200
++++ Python-3.14.0b4/Lib/test/test_xml_etree.py 2025-07-09 07:55:44.223264648 +0200
+@@ -138,6 +138,11 @@
return mock.patch.object(cls, "__eq__", autospec=True, wraps=eq)
@@ -43,7 +49,7 @@
def checkwarnings(*filters, quiet=False):
def decorator(test):
def newtest(*args, **kwargs):
-@@ -1520,9 +1525,11 @@ class XMLPullParserTest(unittest.TestCas
+@@ -1547,9 +1552,11 @@
self.assert_event_tags(parser, [('end', 'root')])
self.assertIsNone(parser.close())
@@ -55,7 +61,7 @@
def test_simple_xml_chunk_5(self):
self.test_simple_xml(chunk_size=5, flush=True)
-@@ -1747,6 +1754,9 @@ class XMLPullParserTest(unittest.TestCas
+@@ -1774,6 +1781,9 @@
self.assert_event_tags(parser, [('end', 'doc')])
diff --git a/Python-3.14.0b3.tar.xz b/Python-3.14.0b3.tar.xz
deleted file mode 100644
index 7fa5a1d..0000000
--- a/Python-3.14.0b3.tar.xz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c6f48bf51f01f50d87007a445dd7afe4a4c7a87ab482570be924c1ddfd0d3682
-size 23626928
diff --git a/Python-3.14.0b3.tar.xz.sigstore b/Python-3.14.0b3.tar.xz.sigstore
deleted file mode 100644
index 24411d1..0000000
--- a/Python-3.14.0b3.tar.xz.sigstore
+++ /dev/null
@@ -1 +0,0 @@
-{"mediaType": "application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial": {"certificate": {"rawBytes": "MIICzzCCAlWgAwIBAgIUByJGQuqs91nWmaSz3zDw8u9QrXkwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjUwNjE3MTgzMjM0WhcNMjUwNjE3MTg0MjM0WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQKkvjy/DW6XBsNL4KGhn7Cbq002FEsNX5ib1Iwi1WbfolR8yyD2I0olxG7HmG3bcB7ULI6b41QEgUJNoBG18c6OCAXQwggFwMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUE5DKgIP1/0qYhsOJ2K9A0QLz34EwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wHQYDVR0RAQH/BBMwEYEPaHVnb0BweXRob24ub3JnMCwGCisGAQQBg78wAQEEHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDAuBgorBgEEAYO/MAEIBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDCBiwYKKwYBBAHWeQIEAgR9BHsAeQB3AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABl38qFpEAAAQDAEgwRgIhAPrfzRQy69XLVERM/SGXe90jKTPdKG+8RCDk3lbQDNsiAiEAwhy9MnhJ3/rTJ3kdFjLNj/1vAf0Svp6LEizf9ZmvbCowCgYIKoZIzj0EAwMDaAAwZQIxAOF+hxPqGCi20YU2FgjlzNc1GzsfasUIUZA4+BUd7sbALI8h6p/bm3EzLCerAawdggIwCLSzarb3Pn0LZrZln9a7Vagbme5MoUQ35VU8yDn10p9ayGwXhHiLgzxxkWU4p14z"}, "tlogEntries": [{"logIndex": "242091651", "logId": {"keyId": "wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion": {"kind": "hashedrekord", "version": "0.0.1"}, "integratedTime": "1750185154", "inclusionPromise": {"signedEntryTimestamp": "MEUCIEgCIEakIe/cVyoSmGmQGH5sRE+ZAKq+bSXjJR3mBB+2AiEAolJax6DoqlLLSMOqeu3qSJvPtx2DtgAm1V6SQvniZ9c="}, "inclusionProof": {"logIndex": "120187389", "rootHash": "CBZhzRNuYSMIkvqy0+VtKfvWaRrldFCQvLROqwpICJ8=", "treeSize": "120187397", "hashes": ["ZoSBJN7hwnnK+AwaHbj98vodiu0iqsh8l0KBMKa6fnE=", "nwvLeMO7z+S2qyu4wfIQPFR7FPMSZlXwZPCnHFWjh+w=", "CO8xe1g5Ldm4l5MUcIn2pmfgifnYfWiE41S9AhluDaA=", "fwnnvZ/rcmNlH9G74uFshxfK5qeuy4q0w03ecv2A7s8=", "lAzaEU6k8f/W3+t/uhgSqMI78Xb2k9p3SZNxTnIGGNU=", "S/H7ELYDVa/9BZtfi8TmhZSXqQhQlHE2lP7c0FTbzUg=", "c2ZZea0xgwt/gVtpXsIKw6/dMmhBHf2QE4+cGR8Hzxc=", "R1FyFnqsxFAatxvySZLbafflRRbv9Oe5FUwRs70eJTA=", "Dzdf3VUntY5OjGUWVOdNuSvBOlT3oFQ9cEB5XuBItyQ=", "6iXN20rIe5WDiGSbP978s/x+mrYskcF/co21+gqmcrE=", "MXZlUSu/Nk7JpWtrdLdZirJdEm6r3KeotdNfHkWFyM0=", "Xanu/6JDW+tIz/8FFY8TJPCZiE6sjMezuSP4ZfaLcZ4=", "JdwKuHIKaaHCnH9lvllhnLwhBLTmddg+MU5yF4JyNzM=", "kGVUE6qTDBZjmi+ni1oCZ/vG1EIHaX70wibrOLr/kaE=", "K4ASfjQwnhSONRPPue7LdN9Bo2+tUa4Qg8L15TBPj9w=", "hUheZicPpMZOVzj8LjHwP6aJKl9Qi7zGSbQdh4BJHY0=", "ISIUCBBJSSuzXkkGRbwU0pJSpWliMh4Zvol1m+9gd/U=", "63G35ZWA2JgOE3bXu0oKhro3tiR4IDPH1IgMp21/pjk=", "mta5fH/gFwxJ/0fT8yGpn3sFCY0G1RY555Iflm0LInM=", "7v8qPHNDLerpduaMx06eb/MwgoQwczTn/cYGKX/9wZ4="], "checkpoint": {"envelope": "rekor.sigstore.dev - 1193050959916656506\n120187397\nCBZhzRNuYSMIkvqy0+VtKfvWaRrldFCQvLROqwpICJ8=\n\n\u2014 rekor.sigstore.dev wNI9ajBFAiEAoo5Vm+/1ZUilU42jf+ObfVMSQO5Rll721LfKDwUuyCYCIG8vPw6Z1iAzXj/pNZZjx0pfdfdiLyOJJ9aTWWJE7uIz\n"}}, "canonicalizedBody": "eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJjNmY0OGJmNTFmMDFmNTBkODcwMDdhNDQ1ZGQ3YWZlNGE0YzdhODdhYjQ4MjU3MGJlOTI0YzFkZGZkMGQzNjgyIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FWUNJUURSVDVjSHBmK21XNHlXUXRtMXluU1hpQzN2bWZjcXlPYWI5S1hpcmVGYVV3SWhBSTBqY1pkczRLUUxVeE4rWGpTcEMxaVhXRDVCRkNvV0JSbGUwNmt5Qk4zWSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVTjZla05EUVd4WFowRjNTVUpCWjBsVlFubEtSMUYxY1hNNU1XNVhiV0ZUZWpONlJIYzRkVGxSY2xocmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFZkMDVxUlROTlZHZDZUV3BOTUZkb1kwNU5hbFYzVG1wRk0wMVVaekJOYWswd1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZSUzJ0MmFua3ZSRmMyV0VKelRrdzBTMGRvYmpkRFluRXdNREpHUlhOT1dEVnBZakVLU1hkcE1WZGlabTlzVWpoNWVVUXlTVEJ2YkhoSE4waHRSek5pWTBJM1ZVeEpObUkwTVZGRloxVktUbTlDUnpFNFl6WlBRMEZZVVhkblowWjNUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZGTlVSTENtZEpVREV2TUhGWmFITlBTakpMT1VFd1VVeDZNelJGZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDBoUldVUldVakJTUVZGSUwwSkNUWGRGV1VWUVlVaFdibUl3UW5kbFdGSnZZakkwZFdJelNtNU5RM2RIUTJselIwRlJVVUpuTnpoM1FWRkZSUXBJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx6WWpKa2NHSnBPWFpaV0ZZd1lVUkJkVUpuYjNKQ1owVkZRVmxQTDAxQlJVbENRMEZOQ2todGFEQmtTRUo2VDJrNGRsb3liREJoU0ZacFRHMU9kbUpUT1hOaU1tUndZbWs1ZGxsWVZqQmhSRU5DYVhkWlMwdDNXVUpDUVVoWFpWRkpSVUZuVWprS1FraHpRV1ZSUWpOQlRqQTVUVWR5UjNoNFJYbFplR3RsU0Vwc2JrNTNTMmxUYkRZME0ycDVkQzgwWlV0amIwRjJTMlUyVDBGQlFVSnNNemh4Um5CRlFRcEJRVkZFUVVWbmQxSm5TV2hCVUhKbWVsSlJlVFk1V0V4V1JWSk5MMU5IV0dVNU1HcExWRkJrUzBjck9GSkRSR3N6YkdKUlJFNXphVUZwUlVGM2FIazVDazF1YUVvekwzSlVTak5yWkVacVRFNXFMekYyUVdZd1UzWndOa3hGYVhwbU9WcHRkbUpEYjNkRFoxbEpTMjlhU1hwcU1FVkJkMDFFWVVGQmQxcFJTWGdLUVU5R0syaDRVSEZIUTJreU1GbFZNa1puYW14NlRtTXhSM3B6Wm1GelZVbFZXa0UwSzBKVlpEZHpZa0ZNU1Rob05uQXZZbTB6UlhwTVEyVnlRV0YzWkFwblowbDNRMHhUZW1GeVlqTlFiakJNV25KYWJHNDVZVGRXWVdkaWJXVTFUVzlWVVRNMVZsVTRlVVJ1TVRCd09XRjVSM2RZYUVocFRHZDZlSGhyVjFVMENuQXhOSG9LTFMwdExTMUZUa1FnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUW89In19fX0="}]}, "messageSignature": {"messageDigest": {"algorithm": "SHA2_256", "digest": "xvSL9R8B9Q2HAHpEXdev5KTHqHq0glcL6STB3f0NNoI="}, "signature": "MEYCIQDRT5cHpf+mW4yWQtm1ynSXiC3vmfcqyOab9KXireFaUwIhAI0jcZds4KQLUxN+XjSpC1iXWD5BFCoWBRle06kyBN3Y"}}
diff --git a/Python-3.14.0b4.tar.xz b/Python-3.14.0b4.tar.xz
new file mode 100644
index 0000000..97dd738
--- /dev/null
+++ b/Python-3.14.0b4.tar.xz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:15e123e056abebba6de5e73cfa304459a8c82cafa85d4fc7fc6de80e6a3e1b39
+size 23641472
diff --git a/Python-3.14.0b4.tar.xz.sigstore b/Python-3.14.0b4.tar.xz.sigstore
new file mode 100644
index 0000000..0f60224
--- /dev/null
+++ b/Python-3.14.0b4.tar.xz.sigstore
@@ -0,0 +1 @@
+{"mediaType": "application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial": {"certificate": {"rawBytes": "MIICzjCCAlWgAwIBAgIUT48RF6npcck0rRmxkqTaG9Or3qUwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjUwNzA4MTQzNjQyWhcNMjUwNzA4MTQ0NjQyWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEebAuMrXCnwY+hsb1BDZPCK3A857oEvPZjevT5RLw8UPnZjRDXSl1Fp08UAoxVo/Qu11FfI5mCBIfc6r2Bj068aOCAXQwggFwMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUfy2PHyIW/wU6MTtSRQIzVH0FKuQwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wHQYDVR0RAQH/BBMwEYEPaHVnb0BweXRob24ub3JnMCwGCisGAQQBg78wAQEEHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDAuBgorBgEEAYO/MAEIBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDCBiwYKKwYBBAHWeQIEAgR9BHsAeQB3AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABl+p3tB8AAAQDAEgwRgIhAJuuLIOE/o/NAiYOHyS9d2LjMDr8DO/KEZC0kFzP8+izAiEA1EY04vs/PFmoka6tAYTTJG5gPEDZR9hyqx/KeEY/IxEwCgYIKoZIzj0EAwMDZwAwZAIwUI/drqwZevX8EYxWiFcAL0j4tdqpXVCe6Q0TPh4HDYk2ijDraD62SCPJ46155ldyAjAmelWuovAngtvJbreutLlYYKyN9/igss10cHFnCuacv0HnYn6pywjw3rScmE1ZBOM="}, "tlogEntries": [{"logIndex": "267629319", "logId": {"keyId": "wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion": {"kind": "hashedrekord", "version": "0.0.1"}, "integratedTime": "1751985403", "inclusionPromise": {"signedEntryTimestamp": "MEUCIHbaXZ1i3oqO72l+0yflNPt3MNAmoWHOrOYcr4amnfXPAiEA21G4Y7P1zMGxHYRrWe0pWa1aNS7JUNTLdgilJm8U9t4="}, "inclusionProof": {"logIndex": "145725057", "rootHash": "VBWKwFeWo524I5tIT3Q03TTxvObEBuPldP+XMmfpOJc=", "treeSize": "145725060", "hashes": ["lJQvHmDpH0QcWfxNpvH6OIXT8dbwQObiiTkcxU7D9e8=", "IkSIJdHonH4ThZfDX8DuMgtGUt3lftTUTdVPj3Y1G5Q=", "/9uINvH+F7vJ1lvXo9HU3sX5HyYBjYJY9IM9UDmYnbM=", "VNGopQ0M3y/LPw7jffS64v+aUUkRh9bGBPDgG8Qau+Q=", "hG9rk8tTcwrsSdhKU7PuC/sHFgTE32yvQeW9npwaqWM=", "JLqqKsHm5b2b6Y7UZuqFcNW/n3FMsNjpWjivf335VQA=", "l4RGx+OiSYvZTpYtgcrkyrOUDpAMhyyvXn32gXUx27E=", "LN7hUuDukSLLCkX5jaLItZYjW4e5WXDEg8giXPsQpg8=", "WtcOz5e7TRSF0NwzMg//1vAB4hRCE4NYrw2n2YLYVoM=", "D+uGvzTUBj/AQJxDnQNeah4TzAebQ8+9OBZLgKjnRng=", "3RuoGJ+2PhEDRSX8TWc7dnrrFpo5fjk/oIVgELBriwY=", "/Jfk3uSydzbLPA4WSDlYb9Z/cgqYxtKJ45yl7itQ+ic=", "Wub6kzKW/gB6+wr8jLx/QtmTfd3P5D512xkwNUoOSRk=", "wLANT0NMxIRh/p5rRcam4MppSIbUXIfT1Ht9FQA2XnI="], "checkpoint": {"envelope": "rekor.sigstore.dev - 1193050959916656506\n145725060\nVBWKwFeWo524I5tIT3Q03TTxvObEBuPldP+XMmfpOJc=\n\n\u2014 rekor.sigstore.dev wNI9ajBEAiAQcdqF0pF87IU9G14wOvcpke2asUszClPPSdQl8t6v/wIgUZEEf1z+uXD2TqKP4K1ZmJVTWDk3jumagQRRtbRyxAs=\n"}}, "canonicalizedBody": "eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIxNWUxMjNlMDU2YWJlYmJhNmRlNWU3M2NmYTMwNDQ1OWE4YzgyY2FmYTg1ZDRmYzdmYzZkZTgwZTZhM2UxYjM5In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJQlNVQjhPVjlqTy9nTzhucFI3VGxETFJCTlhXaCttc1RldHE3dzNQbkR1UUFpRUErMTlzYjFhUW1CM0Z5SmkycEFRMFM0S3ZXNUR6RXFYOXp3dWNla2VsQUw0PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVTjZha05EUVd4WFowRjNTVUpCWjBsVlZEUTRVa1kyYm5Calkyc3djbEp0ZUd0eFZHRkhPVTl5TTNGVmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFZkMDU2UVRSTlZGRjZUbXBSZVZkb1kwNU5hbFYzVG5wQk5FMVVVVEJPYWxGNVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZsWWtGMVRYSllRMjUzV1N0b2MySXhRa1JhVUVOTE0wRTROVGR2UlhaUVdtcGxkbFFLTlZKTWR6aFZVRzVhYWxKRVdGTnNNVVp3TURoVlFXOTRWbTh2VVhVeE1VWm1TVFZ0UTBKSlptTTJjakpDYWpBMk9HRlBRMEZZVVhkblowWjNUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZtZVRKUUNraDVTVmN2ZDFVMlRWUjBVMUpSU1hwV1NEQkdTM1ZSZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDBoUldVUldVakJTUVZGSUwwSkNUWGRGV1VWUVlVaFdibUl3UW5kbFdGSnZZakkwZFdJelNtNU5RM2RIUTJselIwRlJVVUpuTnpoM1FWRkZSUXBJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx6WWpKa2NHSnBPWFpaV0ZZd1lVUkJkVUpuYjNKQ1owVkZRVmxQTDAxQlJVbENRMEZOQ2todGFEQmtTRUo2VDJrNGRsb3liREJoU0ZacFRHMU9kbUpUT1hOaU1tUndZbWs1ZGxsWVZqQmhSRU5DYVhkWlMwdDNXVUpDUVVoWFpWRkpSVUZuVWprS1FraHpRV1ZSUWpOQlRqQTVUVWR5UjNoNFJYbFplR3RsU0Vwc2JrNTNTMmxUYkRZME0ycDVkQzgwWlV0amIwRjJTMlUyVDBGQlFVSnNLM0F6ZEVJNFFRcEJRVkZFUVVWbmQxSm5TV2hCU25WMVRFbFBSUzl2TDA1QmFWbFBTSGxUT1dReVRHcE5SSEk0UkU4dlMwVmFRekJyUm5wUU9DdHBla0ZwUlVFeFJWa3dDalIyY3k5UVJtMXZhMkUyZEVGWlZGUktSelZuVUVWRVdsSTVhSGx4ZUM5TFpVVlpMMGw0UlhkRFoxbEpTMjlhU1hwcU1FVkJkMDFFV25kQmQxcEJTWGNLVlVrdlpISnhkMXBsZGxnNFJWbDRWMmxHWTBGTU1HbzBkR1J4Y0ZoV1EyVTJVVEJVVUdnMFNFUlphekpwYWtSeVlVUTJNbE5EVUVvME5qRTFOV3hrZVFwQmFrRnRaV3hYZFc5MlFXNW5kSFpLWW5KbGRYUk1iRmxaUzNsT09TOXBaM056TVRCalNFWnVRM1ZoWTNZd1NHNVpialp3ZVhkcWR6TnlVMk50UlRGYUNrSlBUVDBLTFMwdExTMUZUa1FnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUW89In19fX0="}]}, "messageSignature": {"messageDigest": {"algorithm": "SHA2_256", "digest": "FeEj4Far67pt5ec8+jBEWajILK+oXU/H/G3oDmo+Gzk="}, "signature": "MEUCIBSUB8OV9jO/gO8npR7TlDLRBNXWh+msTetq7w3PnDuQAiEA+19sb1aQmB3FyJi2pAQ0S4KvW5DzEqX9zwucekelAL4="}}
diff --git a/python314.changes b/python314.changes
index d0fbeba..555e3c6 100644
--- a/python314.changes
+++ b/python314.changes
@@ -1,3 +1,168 @@
+-------------------------------------------------------------------
+Wed Jul 9 05:50:32 UTC 2025 - Matej Cepl
+
+- Update to 3.14.0~b4:
+ - Tools/Demos
+ - gh-135968: Stubs for strip are now provided as part of an
+ iOS install.
+ - gh-133600: Backport file reorganization for .
+ Tools/wasm/wasi This should make backporting future code .
+ changes easier. It also simplifies instructions around how.
+ to do WASI builds in the devguide .
+ - Tests
+ - gh-135966: The iOS testbed now handles the app_packages
+ folder as a site directory.
+ - gh-135494: Fix regrtest to support excluding tests from
+ --pgo tests. Patch by Victor Stinner.
+ - Security
+ - gh-136053: marshal: fix a possible crash when deserializing
+ slice objects.
+ - gh-135661: Fix parsing start and end tags in
+ html.parser.HTMLParser according to the HTML5 standard.
+ - Whitespaces no longer accepted between and the tag
+ name. E.g. script> does not end the script section.
+ - Vertical tabulation (\v) and non-ASCII whitespaces no
+ longer recognized as whitespaces. The only whitespaces
+ are \t\n\r\f and space.
+ - Null character (U+0000) no longer ends the tag name.
+ - Attributes and slashes after the tag name in end tags are
+ now ignored, instead of terminating after the first > in
+ quoted attribute value. E.g. "/>.
+ - Multiple slashes and whitespaces between the last
+ attribute and closing > are now ignored in both start and
+ end tags. E.g. .
+ - Multiple = between attribute name and value are no longer
+ collapsed. E.g. produces attribute “foo”
+ with value “=bar”.
+ - Whitespaces between the = separator and attribute name or
+ value are no longer ignored. E.g. produces
+ two attributes “foo” and “=bar”, both with value None; produces two attributes: “foo” with value “”
+ and “bar” with value None.
+ - gh-102555: Fix comment parsing in html.parser.HTMLParser
+ according to the HTML5 standard. --!> now ends the comment.
+ -- > no longer ends the comment. Support abnormally ended
+ empty comments <--> and <--->.
+ - Library
+ - gh-136286: Fix pickling failures for protocols 0 and 1 for
+ many objects realted to subinterpreters.
+ - gh-136316: Improve support for evaluating nested forward
+ references in typing.evaluate_forward_ref().
+ - gh-85702: If zoneinfo._common.load_tzdata is given a
+ package without a resource a zoneinfo.ZoneInfoNotFoundError
+ is raised rather than a PermissionError. Patch by Victor
+ Stinner.
+ - gh-136028: Fix parsing month names containing “İ”
+ (U+0130, LATIN CAPITAL LETTER I WITH DOT ABOVE) in
+ time.strptime(). This affects locales az_AZ, ber_DZ, ber_MA
+ and crh_UA.
+ - gh-135995: In the palmos encoding, make byte 0x9b decode to
+ › (U+203A - SINGLE RIGHT-POINTING ANGLE QUOTATION MARK).
+ - gh-53203: Fix time.strptime() for %c and %x formats on
+ locales byn_ER, wal_ET and lzh_TW, and for %X format on
+ locales ar_SA, bg_BG and lzh_TW.
+ - gh-91555: An earlier change, which was introduced in
+ 3.14.0b2, has been reverted. It disabled logging for
+ a logger during handling of log messages for that
+ logger. Since the reversion, the behaviour should be as it
+ was before 3.14.0b2.
+ - gh-135878: Fixes a crash of types.SimpleNamespace on free
+ threading builds, when several threads were calling its
+ __repr__() method at the same time.
+ - gh-135836: Fix IndexError in
+ asyncio.loop.create_connection() that could occur when
+ non-OSError exception is raised during connection and
+ socket’s close() raises OSError.
+ - gh-135836: Fix IndexError in
+ asyncio.loop.create_connection() that could occur when the
+ Happy Eyeballs algorithm resulted in an empty exceptions
+ list during connection attempts.
+ - gh-135855: Raise TypeError instead of SystemError when
+ _interpreters.set___main___attrs() is passed a non-dict
+ object. Patch by Brian Schubert.
+ - gh-135815: netrc: skip security checks if os.getuid() is
+ missing. Patch by Bénédikt Tran.
+ - gh-135640: Address bug where it was possible to call
+ xml.etree.ElementTree.ElementTree.write() on an ElementTree
+ object with an invalid root element. This behavior blanked
+ the file passed to write if it already existed.
+ - gh-135645: Added supports_isolated_interpreters field to
+ sys.implementation.
+ - gh-135646: Raise consistent NameError exceptions in
+ annotationlib.ForwardRef.evaluate()
+ - gh-135557: Fix races on heapq updates and list reads on the
+ free threaded build.
+ - gh-119180: Only fetch globals and locals if necessary in
+ annotationlib.get_annotations()
+ - gh-135561: Fix a crash on DEBUG builds when an HACL* HMAC
+ routine fails. Patch by Bénédikt Tran.
+ - gh-135487: Fix reprlib.Repr.repr_int() when given integers
+ with more than sys.get_int_max_str_digits() digits. Patch
+ by Bénédikt Tran.
+ - gh-135335: multiprocessing: Flush stdout and stderr after
+ preloading modules in the forkserver.
+ - gh-135069: Fix the “Invalid error handling” exception in
+ encodings.idna.IncrementalDecoder to correctly replace the
+ ‘errors’ parameter.
+ - gh-130662: +Accept leading zeros in precision and width
+ fields for +:class:Decimal formatting, for example
+ format(Decimal(1.25), '.016f').
+ - gh-130662: Accept leading zeros in precision and
+ width fields for Fraction formatting, for example
+ format(Fraction(1, 3), '.016f').
+ - gh-87790: Support underscore and comma as thousands
+ separators in the fractional part for Fraction’s
+ formatting. Patch by Sergey B Kirpichev.
+ - gh-87790: Support underscore and comma as thousands
+ separators in the fractional part for Decimal’s
+ formatting. Patch by Sergey B Kirpichev.
+ - gh-130664: Handle corner-case for Fraction’s formatting:
+ treat zero-padding (preceding the width field by a zero
+ ('0') character) as an equivalent to a fill character of
+ '0' with an alignment type of '=', just as in case of
+ float’s.
+ - Documentation
+ - gh-136155: EPUB builds are fixed by excluding
+ non-XHTML-compatible tags.
+ - Core and Builtins
+ - gh-109700: Fix memory error handling in
+ PyDict_SetDefault().
+ - gh-78465: Fix error message for cls.__new__(cls, ...) where
+ cls is not instantiable builtin or extension type (with
+ tp_new set to NULL).
+ - gh-129958: Differentiate between t-strings and f-strings
+ in syntax error for newlines in format specifiers of
+ single-quoted interpolated strings.
+ - gh-135871: Non-blocking mutex lock attempts now return
+ immediately when the lock is busy instead of briefly
+ spinning in the free threading build.
+ - gh-135106: Restrict the trashcan mechanism to GC’ed objects
+ and untrack them while in the trashcan to prevent the GC
+ and trashcan mechanisms conflicting.
+ - gh-135607: Fix potential weakref races in an object’s
+ destructor on the free threaded build.
+ - gh-135608: Fix a crash in the JIT involving attributes of
+ modules.
+ - gh-135543: Emit sys.remote_exec audit event
+ when sys.remote_exec() is called and migrate
+ remote_debugger_script to cpython.remote_debugger_script.
+ - gh-134280: Disable constant folding for ~ with a boolean
+ argument. This moves the deprecation warning from compile
+ time to runtime.
+ - C API
+ - gh-135906: Fix compilation errors when compiling the
+ internal headers with a C++ compiler.
+ - Build
+ - gh-134273: Add support for configuring compiler flags for
+ the JIT with CFLAGS_JIT
+
+-------------------------------------------------------------------
+Wed Jul 2 13:14:28 UTC 2025 - Matej Cepl
+
+- Add bsc1243155-sphinx-non-determinism.patch (bsc#1243155) to
+ generate ids for audit_events using docname (reproducible
+ builds).
+
-------------------------------------------------------------------
Tue Jul 1 08:24:53 UTC 2025 - Daniel Garcia
diff --git a/python314.spec b/python314.spec
index f55d692..d6e2629 100644
--- a/python314.spec
+++ b/python314.spec
@@ -162,8 +162,8 @@
# _md5.cpython-38m-x86_64-linux-gnu.so
%define dynlib() %{sitedir}/lib-dynload/%{1}.cpython-%{abi_tag}-%{archname}-%{_os}%{?_gnu}%{?armsuffix}.so
Name: %{python_pkg_name}%{psuffix}
-Version: 3.14.0~b3
-%define tarversion 3.14.0b3
+Version: 3.14.0~b4
+%define tarversion 3.14.0b4
%define tarname Python-%{tarversion}
Release: 0
Summary: Python 3 Interpreter
diff --git a/skip-test_pyobject_freed_is_freed.patch b/skip-test_pyobject_freed_is_freed.patch
index 123f0da..8ea8ffb 100644
--- a/skip-test_pyobject_freed_is_freed.patch
+++ b/skip-test_pyobject_freed_is_freed.patch
@@ -2,9 +2,11 @@
Lib/test/test_capi/test_mem.py | 1 +
1 file changed, 1 insertion(+)
---- a/Lib/test/test_capi/test_mem.py
-+++ b/Lib/test/test_capi/test_mem.py
-@@ -114,6 +114,7 @@ class PyMemDebugTests(unittest.TestCase)
+Index: Python-3.14.0b4/Lib/test/test_capi/test_mem.py
+===================================================================
+--- Python-3.14.0b4.orig/Lib/test/test_capi/test_mem.py 2025-07-09 07:53:00.072386821 +0200
++++ Python-3.14.0b4/Lib/test/test_capi/test_mem.py 2025-07-09 07:55:44.206338886 +0200
+@@ -114,6 +114,7 @@
def test_pyobject_forbidden_bytes_is_freed(self):
self.check_pyobject_is_freed('check_pyobject_forbidden_bytes_is_freed')