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 2ebfe4e..7dc6a23 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.0a7/Lib/test/test_pyexpat.py
+===================================================================
+--- Python-3.14.0a7.orig/Lib/test/test_pyexpat.py 2025-04-12 23:55:25.077318106 +0200
++++ Python-3.14.0a7/Lib/test/test_pyexpat.py 2025-04-12 23:58:03.769944012 +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.0a7/Lib/test/test_sax.py
+===================================================================
+--- Python-3.14.0a7.orig/Lib/test/test_sax.py 2025-04-12 23:55:25.131274628 +0200
++++ Python-3.14.0a7/Lib/test/test_sax.py 2025-04-12 23:58:03.770532570 +0200
+@@ -1241,6 +1241,9 @@
self.assertEqual(result.getvalue(), start + b"")
@@ -29,11 +33,13 @@
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
-@@ -121,6 +121,11 @@ ATTLIST_XML = """\
-
- """
+Index: Python-3.14.0a7/Lib/test/test_xml_etree.py
+===================================================================
+--- Python-3.14.0a7.orig/Lib/test/test_xml_etree.py 2025-04-12 23:55:25.550207629 +0200
++++ Python-3.14.0a7/Lib/test/test_xml_etree.py 2025-04-12 23:58:03.771265630 +0200
+@@ -138,6 +138,11 @@
+ return mock.patch.object(cls, "__eq__", autospec=True, wraps=eq)
+
+IS_SLE_15_7 = os.environ.get("SLE_VERSION", "") == "0150700"
+fails_with_expat_2_6_0 = (unittest.expectedFailure
@@ -43,7 +49,7 @@
def checkwarnings(*filters, quiet=False):
def decorator(test):
def newtest(*args, **kwargs):
-@@ -1504,9 +1509,11 @@ class XMLPullParserTest(unittest.TestCas
+@@ -1521,9 +1526,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)
-@@ -1731,6 +1738,9 @@ class XMLPullParserTest(unittest.TestCas
+@@ -1748,6 +1755,9 @@
self.assert_event_tags(parser, [('end', 'doc')])
diff --git a/F00251-change-user-install-location.patch b/F00251-change-user-install-location.patch
index ddc1ee6..c0efc98 100644
--- a/F00251-change-user-install-location.patch
+++ b/F00251-change-user-install-location.patch
@@ -28,9 +28,11 @@ Co-authored-by: Lumír Balhar
Lib/test/test_sysconfig.py | 17 +++++++++++++--
2 files changed, 65 insertions(+), 3 deletions(-)
---- a/Lib/sysconfig/__init__.py
-+++ b/Lib/sysconfig/__init__.py
-@@ -106,6 +106,11 @@ if os.name == 'nt':
+Index: Python-3.14.0a7/Lib/sysconfig/__init__.py
+===================================================================
+--- Python-3.14.0a7.orig/Lib/sysconfig/__init__.py 2025-04-12 23:55:23.521797317 +0200
++++ Python-3.14.0a7/Lib/sysconfig/__init__.py 2025-04-12 23:55:30.484969292 +0200
+@@ -106,6 +106,11 @@
else:
_INSTALL_SCHEMES['venv'] = _INSTALL_SCHEMES['posix_venv']
@@ -42,7 +44,7 @@ Co-authored-by: Lumír Balhar
def _get_implementation():
return 'Python'
-@@ -167,13 +172,28 @@ if _HAS_USER_BASE:
+@@ -169,13 +174,28 @@
},
}
@@ -71,7 +73,7 @@ Co-authored-by: Lumír Balhar
_BASE_EXEC_PREFIX = os.path.normpath(sys.base_exec_prefix)
# Mutex guarding initialization of _CONFIG_VARS.
_CONFIG_VARS_LOCK = threading.RLock()
-@@ -259,11 +279,40 @@ def _extend_dict(target_dict, other_dict
+@@ -268,11 +288,40 @@
target_dict[key] = value
@@ -113,9 +115,11 @@ Co-authored-by: Lumír Balhar
if os.name == 'nt':
# On Windows we want to substitute 'lib' for schemes rather
# than the native value (without modifying vars, in case it
---- a/Lib/test/test_sysconfig.py
-+++ b/Lib/test/test_sysconfig.py
-@@ -130,8 +130,19 @@ class TestSysConfig(unittest.TestCase):
+Index: Python-3.14.0a7/Lib/test/test_sysconfig.py
+===================================================================
+--- Python-3.14.0a7.orig/Lib/test/test_sysconfig.py 2025-04-12 23:55:25.242938668 +0200
++++ Python-3.14.0a7/Lib/test/test_sysconfig.py 2025-04-12 23:55:30.485409994 +0200
+@@ -131,8 +131,19 @@
for scheme in _INSTALL_SCHEMES:
for name in _INSTALL_SCHEMES[scheme]:
expected = _INSTALL_SCHEMES[scheme][name].format(**config_vars)
@@ -136,7 +140,7 @@ Co-authored-by: Lumír Balhar
os.path.normpath(expected),
)
-@@ -386,7 +397,7 @@ class TestSysConfig(unittest.TestCase):
+@@ -387,7 +398,7 @@
self.assertTrue(os.path.isfile(config_h), config_h)
def test_get_scheme_names(self):
@@ -145,7 +149,7 @@ Co-authored-by: Lumír Balhar
if HAS_USER_BASE:
wanted.extend(['nt_user', 'osx_framework_user', 'posix_user'])
self.assertEqual(get_scheme_names(), tuple(sorted(wanted)))
-@@ -398,6 +409,8 @@ class TestSysConfig(unittest.TestCase):
+@@ -399,6 +410,8 @@
cmd = "-c", "import sysconfig; print(sysconfig.get_platform())"
self.assertEqual(py.call_real(*cmd), py.call_link(*cmd))
diff --git a/Python-3.14.0a5.tar.xz b/Python-3.14.0a5.tar.xz
deleted file mode 100644
index acbcac8..0000000
--- a/Python-3.14.0a5.tar.xz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:74e83f26de1e4fb9eef1b56492cff92508834bb71ac13f5c580438ce9f093682
-size 22859900
diff --git a/Python-3.14.0a5.tar.xz.sigstore b/Python-3.14.0a5.tar.xz.sigstore
deleted file mode 100644
index 4fd7573..0000000
--- a/Python-3.14.0a5.tar.xz.sigstore
+++ /dev/null
@@ -1 +0,0 @@
-{"mediaType": "application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial": {"certificate": {"rawBytes": "MIICzTCCAlOgAwIBAgIUCBWax1Yv006eiUrTmVXnVEYP0acwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjUwMjEyMDc1NDE1WhcNMjUwMjEyMDgwNDE1WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEVLFuPzDtOjejFwRdg4rACkVZkfQ10PXnoC8+U28wbs73RqyH7az/ArOWDhwvCruZCTOtm2QTWYCK30NDi/6q+KOCAXIwggFuMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUc0Iet3OpFv7Oq6lKxwe/rg2yFgowHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wHQYDVR0RAQH/BBMwEYEPaHVnb0BweXRob24ub3JnMCwGCisGAQQBg78wAQEEHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDAuBgorBgEEAYO/MAEIBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDCBiQYKKwYBBAHWeQIEAgR7BHkAdwB1AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABlPkmxwAAAAQDAEYwRAIgFK4/2Od+BPgQZOqIOjCl7m37O9dFR6o8vvSxw3wLaKECICszaphh3ouecV37MD5cNSrC9OMoOvVUD1tL51NIygISMAoGCCqGSM49BAMDA2gAMGUCMQCNuzhin8H0+q2qxODgGrsKMpaSmK20VJxjmW+sEaEZzKROThaHevYwgFKOVFD1uj8CMBgy22e4sm2yW2tScetkOuYwgU3sSUycXRP9pKr9Gllfg9lOFlXC6/vnmvBuPRRjsA=="}, "tlogEntries": [{"logIndex": "170570053", "logId": {"keyId": "wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion": {"kind": "hashedrekord", "version": "0.0.1"}, "integratedTime": "1739346856", "inclusionPromise": {"signedEntryTimestamp": "MEYCIQCGqYfCnbihbWn8mvWbiVe5x9xA/0Mvy2VRBnFm5E8ZZgIhAO6zmjkYA67Ttb7JKF5nn68KMvWi5MTzR+8o9xVq136S"}, "inclusionProof": {"logIndex": "48665791", "rootHash": "HzxfBCv2yi4J8G+S7TgoiMNBBo/wSkRjGDJfNOVUcTs=", "treeSize": "48665792", "hashes": ["b0yDjzNitZJIGTblWLhs4yUCBz6CKSng8isTxSgbsVE=", "dkJ2Yt1bEtBmpXpRN3vSmk+6+1j8GsOFEUA9iyueWhk=", "i1ABh9Dx8meNOBCr/HhTSupqNYK0LI+NnFjXmDfEgnY=", "MegLwopuwueYsc+JjT6t3LKiOJmtE0MguZsVB71COH0=", "FT+AWm/ITpPN+fIVrNXLPTjNvmfTVoGQfCV+uE6gZ8w=", "kRkMXhEDVcanV+ajODgw+9wD30fMQgV1vmvCfUV8ba0=", "6Z0kSTNv87FgCP6fBI6QTIRs0ABTmLD9tgAbSWRDRr0=", "p39Aj7k63Y8N82q5GXzhIzuZSex0HZN+9xq7U1Sxdp4=", "jhYil8zet/V88Ox8NV66V1iBkETlEJ2qH+SXo+kfMb0=", "Z/HAKVPPWMW9bRNxiWSaI+beB8FjcG/QYDqBuAZMTsY=", "cgbhJqDRiWT+2XKIQ9ch9WJ+6uwysr3Vn01jUW3nyv0=", "0NILEMXlPNU3cLx3pWSpe/u8BfMuXFyP+6HIsWDtkAU=", "3G1CfELRgkrpGc7BJBsecW/HvOojsTHpl40WsoH/3A0=", "Zse3BPkR/cJv62LvVuiDH+EpgIE5v3V3qXdG8HQFf1A=", "jU9+tgjTIKUYGeU7T7RjqyL+F+gFV9tCdwX2GZ1UtQs=", "vemyaMj0Na1LMjbB/9Dmkq8T+jAb3o+yCESgAayUABU="], "checkpoint": {"envelope": "rekor.sigstore.dev - 1193050959916656506\n48665792\nHzxfBCv2yi4J8G+S7TgoiMNBBo/wSkRjGDJfNOVUcTs=\n\n\u2014 rekor.sigstore.dev wNI9ajBFAiEA3ZglJ4aYKUNaTJ96mujk5pcgWAj6iiwpmuUtpKIepGQCIGsrkTWsS2nFwjAv95ctdnJZK7cSvUMf+milS4alGlu9\n"}}, "canonicalizedBody": "eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI3NGU4M2YyNmRlMWU0ZmI5ZWVmMWI1NjQ5MmNmZjkyNTA4ODM0YmI3MWFjMTNmNWM1ODA0MzhjZTlmMDkzNjgyIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJQVlIaGJLVVNTZldtMmNqV2hWYmhtUXdEUTdtR0lpcGdCVEpKaXFrdEtmdEFpRUE2VUszY3huRE5iZ0g1QnYzalBLanZzL2c5YjRrT1NNVTEvTUs2cmN1RklBPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVTjZWRU5EUVd4UFowRjNTVUpCWjBsVlEwSlhZWGd4V1hZd01EWmxhVlZ5VkcxV1dHNVdSVmxRTUdGamQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFZkMDFxUlhsTlJHTXhUa1JGTVZkb1kwNU5hbFYzVFdwRmVVMUVaM2RPUkVVeFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZXVEVaMVVIcEVkRTlxWldwR2QxSmtaelJ5UVVOclZscHJabEV4TUZCWWJtOURPQ3NLVlRJNGQySnpOek5TY1hsSU4yRjZMMEZ5VDFkRWFIZDJRM0oxV2tOVVQzUnRNbEZVVjFsRFN6TXdUa1JwTHpaeEswdFBRMEZZU1hkblowWjFUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZqTUVsbENuUXpUM0JHZGpkUGNUWnNTM2gzWlM5eVp6SjVSbWR2ZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDBoUldVUldVakJTUVZGSUwwSkNUWGRGV1VWUVlVaFdibUl3UW5kbFdGSnZZakkwZFdJelNtNU5RM2RIUTJselIwRlJVVUpuTnpoM1FWRkZSUXBJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx6WWpKa2NHSnBPWFpaV0ZZd1lVUkJkVUpuYjNKQ1owVkZRVmxQTDAxQlJVbENRMEZOQ2todGFEQmtTRUo2VDJrNGRsb3liREJoU0ZacFRHMU9kbUpUT1hOaU1tUndZbWs1ZGxsWVZqQmhSRU5DYVZGWlMwdDNXVUpDUVVoWFpWRkpSVUZuVWpjS1FraHJRV1IzUWpGQlRqQTVUVWR5UjNoNFJYbFplR3RsU0Vwc2JrNTNTMmxUYkRZME0ycDVkQzgwWlV0amIwRjJTMlUyVDBGQlFVSnNVR3R0ZUhkQlFRcEJRVkZFUVVWWmQxSkJTV2RHU3pRdk1rOWtLMEpRWjFGYVQzRkpUMnBEYkRkdE16ZFBPV1JHVWpadk9IWjJVM2gzTTNkTVlVdEZRMGxEYzNwaGNHaG9Dak52ZFdWalZqTTNUVVExWTA1VGNrTTVUMDF2VDNaV1ZVUXhkRXcxTVU1SmVXZEpVMDFCYjBkRFEzRkhVMDAwT1VKQlRVUkJNbWRCVFVkVlEwMVJRMDRLZFhwb2FXNDRTREFyY1RKeGVFOUVaMGR5YzB0TmNHRlRiVXN5TUZaS2VHcHRWeXR6UldGRlducExVazlVYUdGSVpYWlpkMmRHUzA5V1JrUXhkV280UXdwTlFtZDVNakpsTkhOdE1ubFhNblJUWTJWMGEwOTFXWGRuVlROelUxVjVZMWhTVURsd1MzSTVSMnhzWm1jNWJFOUdiRmhETmk5MmJtMTJRblZRVWxKcUNuTkJQVDBLTFMwdExTMUZUa1FnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUW89In19fX0="}]}, "messageSignature": {"messageDigest": {"algorithm": "SHA2_256", "digest": "dOg/Jt4eT7nu8bVkks/5JQiDS7cawT9cWAQ4zp8JNoI="}, "signature": "MEUCIAYHhbKUSSfWm2cjWhVbhmQwDQ7mGIipgBTJJiqktKftAiEA6UK3cxnDNbgH5Bv3jPKjvs/g9b4kOSMU1/MK6rcuFIA="}}
diff --git a/Python-3.14.0a7.tar.xz b/Python-3.14.0a7.tar.xz
new file mode 100644
index 0000000..cd37618
--- /dev/null
+++ b/Python-3.14.0a7.tar.xz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:71adbcec3ac9edf93308e55cfb4184f2eb4b16fda2bb0a5a382929ed29c8386d
+size 23015952
diff --git a/Python-3.14.0a7.tar.xz.sigstore b/Python-3.14.0a7.tar.xz.sigstore
new file mode 100644
index 0000000..db0b133
--- /dev/null
+++ b/Python-3.14.0a7.tar.xz.sigstore
@@ -0,0 +1 @@
+{"mediaType": "application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial": {"certificate": {"rawBytes": "MIICzjCCAlSgAwIBAgIUDwqRiJH4afgF7PkW1Qo6rr2v0lkwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjUwNDA4MTQxMDA1WhcNMjUwNDA4MTQyMDA1WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZMgeduxSbRvf4+rxh9JLHe0ESc4Xexly0NaNWHeiTHLmdg+PRLNa5wLOEMZnjbZejU7znxttN65MnOzV5cOcoKOCAXMwggFvMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUJQXlBvRXJEBKte20LxybMfGrT6YwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wHQYDVR0RAQH/BBMwEYEPaHVnb0BweXRob24ub3JnMCwGCisGAQQBg78wAQEEHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDAuBgorBgEEAYO/MAEIBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABlhW8oHwAAAQDAEcwRQIhALZwxAQ5nnFRozZP8YRDJAl6S1kWfYD5oV7AEPrj0s5CAiA5CY5C5cBFEcjroS+wQAWg1LW4HqvRZ0KVR99kcb4a/TAKBggqhkjOPQQDAwNoADBlAjAHbpNPV8nJ2q37EdYR8NElF7p7qVBSdT9VzBLh0X0WL0Df0ub0LiBPYPNELQ/n0rQCMQDd2OPfzn42qBrwT/TUP2yR0/0h9nsqGOsinLhLH/euLXXJ+xK0iHMRLfk4cABvoFs="}, "tlogEntries": [{"logIndex": "193881744", "logId": {"keyId": "wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion": {"kind": "hashedrekord", "version": "0.0.1"}, "integratedTime": "1744121405", "inclusionPromise": {"signedEntryTimestamp": "MEUCIQDZCZJVW+h+35nY12Z9y9tOkwStyIEVZmXSPx7mQUy0DwIgYWnL18yNoypHlLRSb2WIkcRxcD589pZdPORUS442MhU="}, "inclusionProof": {"logIndex": "71977482", "rootHash": "5SzvaU4/6U0MtwYjXGh0z1gIbnBbXfoMCLyL7PyEzE8=", "treeSize": "71977483", "hashes": ["+kSGTHFAaROPxw/+007Kwz3MXdUvY3V+rrY6sn3rTWc=", "gArlaOWkPW1lG6zUi9fwcxm6cyXspC+A2q3O5EzUI28=", "9TNwbV6fOnLuQ0CrvdKWO4n2fooZCvdCTwrFZCo6a8E=", "phHq2powa3InqGTI+IN0To1CKFgq/QLjjjUOmMz73pU=", "3tDvwrpMz/XYloigErVZuQZphUjJ7mX16wnR7tq2tMY=", "QReFEOB9XSZtDKsjRtA0fGnYGMYD2Z7qn50auG1YlWo=", "K26LG80DXyb+bC58c4Nw00WigG52v0PCsZGY3ExGsts=", "WEm5OgPzJpYROv+4CcrieexCYyQKrLUH3hbxmcQQ+DM=", "7v8qPHNDLerpduaMx06eb/MwgoQwczTn/cYGKX/9wZ4="], "checkpoint": {"envelope": "rekor.sigstore.dev - 1193050959916656506\n71977483\n5SzvaU4/6U0MtwYjXGh0z1gIbnBbXfoMCLyL7PyEzE8=\n\n\u2014 rekor.sigstore.dev wNI9ajBFAiEAxksfGmVyE0Zi4wa9fM67aL5JUeJSsJUyWeU2jqqH/yoCIHfCdL/guuSIxD8tEK6/qQoRdbugANBBjI6gG96bkluH\n"}}, "canonicalizedBody": "eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI3MWFkYmNlYzNhYzllZGY5MzMwOGU1NWNmYjQxODRmMmViNGIxNmZkYTJiYjBhNWEzODI5MjllZDI5YzgzODZkIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUR3U3lCQ2swa2t3NytBNDlSL0UxVmdrRUtORXhKYUt4ejU3SjYzUWdTSlhBSWdMdUVpNGNqMnMvTFZ1VEdaaThGMkxZZVhzOUJtYXA0cnVyU3NWWHI5L21VPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVTjZha05EUVd4VFowRjNTVUpCWjBsVlJIZHhVbWxLU0RSaFptZEdOMUJyVnpGUmJ6WnljakoyTUd4cmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFZkMDVFUVRSTlZGRjRUVVJCTVZkb1kwNU5hbFYzVGtSQk5FMVVVWGxOUkVFeFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZhVFdkbFpIVjRVMkpTZG1ZMEszSjRhRGxLVEVobE1FVlRZelJZWlhoc2VUQk9ZVTRLVjBobGFWUklURzFrWnl0UVVreE9ZVFYzVEU5RlRWcHVhbUphWldwVk4zcHVlSFIwVGpZMVRXNVBlbFkxWTA5amIwdFBRMEZZVFhkblowWjJUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZLVVZoc0NrSjJVbGhLUlVKTGRHVXlNRXg0ZVdKTlprZHlWRFpaZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDBoUldVUldVakJTUVZGSUwwSkNUWGRGV1VWUVlVaFdibUl3UW5kbFdGSnZZakkwZFdJelNtNU5RM2RIUTJselIwRlJVVUpuTnpoM1FWRkZSUXBJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx6WWpKa2NHSnBPWFpaV0ZZd1lVUkJkVUpuYjNKQ1owVkZRVmxQTDAxQlJVbENRMEZOQ2todGFEQmtTRUo2VDJrNGRsb3liREJoU0ZacFRHMU9kbUpUT1hOaU1tUndZbWs1ZGxsWVZqQmhSRU5DYVdkWlMwdDNXVUpDUVVoWFpWRkpSVUZuVWpnS1FraHZRV1ZCUWpKQlRqQTVUVWR5UjNoNFJYbFplR3RsU0Vwc2JrNTNTMmxUYkRZME0ycDVkQzgwWlV0amIwRjJTMlUyVDBGQlFVSnNhRmM0YjBoM1FRcEJRVkZFUVVWamQxSlJTV2hCVEZwM2VFRlJOVzV1UmxKdmVscFFPRmxTUkVwQmJEWlRNV3RYWmxsRU5XOVdOMEZGVUhKcU1ITTFRMEZwUVRWRFdUVkRDalZqUWtaRlkycHliMU1yZDFGQlYyY3hURmMwU0hGMlVsb3dTMVpTT1RsclkySTBZUzlVUVV0Q1oyZHhhR3RxVDFCUlVVUkJkMDV2UVVSQ2JFRnFRVWdLWW5CT1VGWTRia295Y1RNM1JXUlpVamhPUld4R04zQTNjVlpDVTJSVU9WWjZRa3hvTUZnd1Ywd3dSR1l3ZFdJd1RHbENVRmxRVGtWTVVTOXVNSEpSUXdwTlVVUmtNazlRWm5wdU5ESnhRbkozVkM5VVZWQXllVkl3THpCb09XNXpjVWRQYzJsdVRHaE1TQzlsZFV4WVdFb3JlRXN3YVVoTlVreG1helJqUVVKMkNtOUdjejBLTFMwdExTMUZUa1FnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUW89In19fX0="}]}, "messageSignature": {"messageDigest": {"algorithm": "SHA2_256", "digest": "ca287DrJ7fkzCOVc+0GE8utLFv2iuwpaOCkp7SnIOG0="}, "signature": "MEUCIQDwSyBCk0kkw7+A49R/E1VgkEKNExJaKxz57J63QgSJXAIgLuEi4cj2s/LVuTGZi8F2LYeXs9Bmap4rurSsVXr9/mU="}}
diff --git a/bpo-31046_ensurepip_honours_prefix.patch b/bpo-31046_ensurepip_honours_prefix.patch
index 6f3a0ff..9c85757 100644
--- a/bpo-31046_ensurepip_honours_prefix.patch
+++ b/bpo-31046_ensurepip_honours_prefix.patch
@@ -5,28 +5,32 @@ Subject: [PATCH] bpo-31046: ensurepip does not honour the value of $(prefix)
Co-Authored-By: Xavier de Gaye
---
- Doc/library/ensurepip.rst | 9 +++--
+ Doc/library/ensurepip.rst | 12 +++++-
Lib/ensurepip/__init__.py | 18 +++++++---
Lib/test/test_ensurepip.py | 11 ++++++
Makefile.pre.in | 4 +-
Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst | 1
- 5 files changed, 34 insertions(+), 9 deletions(-)
+ 5 files changed, 37 insertions(+), 9 deletions(-)
create mode 100644 Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst
---- a/Doc/library/ensurepip.rst
-+++ b/Doc/library/ensurepip.rst
-@@ -59,8 +59,9 @@ is at least as recent as the one availab
+Index: Python-3.14.0a7/Doc/library/ensurepip.rst
+===================================================================
+--- Python-3.14.0a7.orig/Doc/library/ensurepip.rst 2025-04-08 13:20:51.000000000 +0200
++++ Python-3.14.0a7/Doc/library/ensurepip.rst 2025-04-12 23:57:46.539191105 +0200
+@@ -61,7 +61,11 @@
By default, ``pip`` is installed into the current virtual environment
(if one is active) or into the system site packages (if there is no
active virtual environment). The installation location can be controlled
-through two additional command line options:
+through some additional command line options:
++
++.. option:: --prefix
++
++ Installs ``pip`` using the given directory prefix.
-+* ``--prefix ``: Installs ``pip`` using the given directory prefix.
- * :samp:`--root {dir}`: Installs ``pip`` relative to the given root directory
- rather than the root of the currently active virtual environment (if any)
- or the default root for the current Python installation.
-@@ -92,7 +93,7 @@ Module API
+ .. option:: --root
+
+@@ -102,7 +106,7 @@
Returns a string specifying the available version of pip that will be
installed when bootstrapping an environment.
@@ -35,7 +39,7 @@ Co-Authored-By: Xavier de Gaye
altinstall=False, default_pip=False, \
verbosity=0)
-@@ -102,6 +103,8 @@ Module API
+@@ -112,6 +116,8 @@
If *root* is ``None``, then installation uses the default install location
for the current environment.
@@ -44,7 +48,7 @@ Co-Authored-By: Xavier de Gaye
*upgrade* indicates whether or not to upgrade an existing installation
of an earlier version of ``pip`` to the available version.
-@@ -122,6 +125,8 @@ Module API
+@@ -132,6 +138,8 @@
*verbosity* controls the level of output to :data:`sys.stdout` from the
bootstrapping operation.
@@ -53,9 +57,11 @@ Co-Authored-By: Xavier de Gaye
.. audit-event:: ensurepip.bootstrap root ensurepip.bootstrap
.. note::
---- a/Lib/ensurepip/__init__.py
-+++ b/Lib/ensurepip/__init__.py
-@@ -106,27 +106,27 @@ def _disable_pip_configuration_settings(
+Index: Python-3.14.0a7/Lib/ensurepip/__init__.py
+===================================================================
+--- Python-3.14.0a7.orig/Lib/ensurepip/__init__.py 2025-04-12 23:55:22.995381917 +0200
++++ Python-3.14.0a7/Lib/ensurepip/__init__.py 2025-04-12 23:56:51.429686796 +0200
+@@ -106,27 +106,27 @@
os.environ['PIP_CONFIG_FILE'] = os.devnull
@@ -88,7 +94,7 @@ Co-Authored-By: Xavier de Gaye
Note that calling this function will alter both sys.path and os.environ.
"""
-@@ -162,6 +162,8 @@ def _bootstrap(*, root=None, upgrade=Fal
+@@ -162,6 +162,8 @@
args = ["install", "--no-cache-dir", "--no-index", "--find-links", tmpdir]
if root:
args += ["--root", root]
@@ -97,7 +103,7 @@ Co-Authored-By: Xavier de Gaye
if upgrade:
args += ["--upgrade"]
if user:
-@@ -238,6 +240,11 @@ def _main(argv=None):
+@@ -238,6 +240,11 @@
help="Install everything relative to this alternate root directory.",
)
parser.add_argument(
@@ -109,7 +115,7 @@ Co-Authored-By: Xavier de Gaye
"--altinstall",
action="store_true",
default=False,
-@@ -256,6 +263,7 @@ def _main(argv=None):
+@@ -256,6 +263,7 @@
return _bootstrap(
root=args.root,
@@ -117,9 +123,11 @@ Co-Authored-By: Xavier de Gaye
upgrade=args.upgrade,
user=args.user,
verbosity=args.verbosity,
---- a/Lib/test/test_ensurepip.py
-+++ b/Lib/test/test_ensurepip.py
-@@ -100,6 +100,17 @@ class TestBootstrap(EnsurepipMixin, unit
+Index: Python-3.14.0a7/Lib/test/test_ensurepip.py
+===================================================================
+--- Python-3.14.0a7.orig/Lib/test/test_ensurepip.py 2025-04-12 23:55:24.305360451 +0200
++++ Python-3.14.0a7/Lib/test/test_ensurepip.py 2025-04-12 23:56:51.430001922 +0200
+@@ -100,6 +100,17 @@
unittest.mock.ANY,
)
@@ -137,9 +145,11 @@ Co-Authored-By: Xavier de Gaye
def test_bootstrapping_with_user(self):
ensurepip.bootstrap(user=True)
---- a/Makefile.pre.in
-+++ b/Makefile.pre.in
-@@ -2228,7 +2228,7 @@ install: @FRAMEWORKINSTALLFIRST@ @INSTAL
+Index: Python-3.14.0a7/Makefile.pre.in
+===================================================================
+--- Python-3.14.0a7.orig/Makefile.pre.in 2025-04-12 23:55:34.668791223 +0200
++++ Python-3.14.0a7/Makefile.pre.in 2025-04-12 23:56:51.430413011 +0200
+@@ -2322,7 +2322,7 @@
install|*) ensurepip="" ;; \
esac; \
$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
@@ -148,7 +158,7 @@ Co-Authored-By: Xavier de Gaye
fi
.PHONY: altinstall
-@@ -2239,7 +2239,7 @@ altinstall: commoninstall
+@@ -2333,7 +2333,7 @@
install|*) ensurepip="--altinstall" ;; \
esac; \
$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
@@ -157,7 +167,9 @@ Co-Authored-By: Xavier de Gaye
fi
.PHONY: commoninstall
---- /dev/null
-+++ b/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst
+Index: Python-3.14.0a7/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ Python-3.14.0a7/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst 2025-04-12 23:56:51.431067499 +0200
@@ -0,0 +1 @@
+A directory prefix can now be specified when using :mod:`ensurepip`.
diff --git a/fix-test-recursion-limit-15.6.patch b/fix-test-recursion-limit-15.6.patch
index fe7492f..ec8e89f 100644
--- a/fix-test-recursion-limit-15.6.patch
+++ b/fix-test-recursion-limit-15.6.patch
@@ -2,9 +2,11 @@
Lib/test/test_compile.py | 5 +++++
1 file changed, 5 insertions(+)
---- a/Lib/test/test_compile.py
-+++ b/Lib/test/test_compile.py
-@@ -25,6 +25,9 @@ from test.support import (script_helper,
+Index: Python-3.14.0a7/Lib/test/test_compile.py
+===================================================================
+--- Python-3.14.0a7.orig/Lib/test/test_compile.py 2025-04-12 23:55:24.033076315 +0200
++++ Python-3.14.0a7/Lib/test/test_compile.py 2025-04-12 23:58:06.932213319 +0200
+@@ -24,6 +24,9 @@
from test.support.bytecode_helper import instructions_with_positions
from test.support.os_helper import FakePath
@@ -14,19 +16,19 @@
class TestSpecifics(unittest.TestCase):
def compile_single(self, source):
-@@ -121,6 +124,7 @@ class TestSpecifics(unittest.TestCase):
+@@ -120,6 +123,7 @@
self.assertEqual(d['z'], 12)
@unittest.skipIf(support.is_wasi, "exhausts limited stack on WASI")
+ @unittest.skipIf(IS_SLE_15_6 and IS_32bit, "fails on 15.6 i586")
@support.skip_emscripten_stack_overflow()
def test_extended_arg(self):
- repeat = int(get_c_recursion_limit() * 0.9)
-@@ -710,6 +714,7 @@ class TestSpecifics(unittest.TestCase):
+ repeat = 100
+@@ -709,6 +713,7 @@
@support.cpython_only
@unittest.skipIf(support.is_wasi, "exhausts limited stack on WASI")
+ @unittest.skipIf(IS_SLE_15_6 and IS_32bit, "fails on 15.6 i586")
@support.skip_emscripten_stack_overflow()
def test_compiler_recursion_limit(self):
- # Expected limit is Py_C_RECURSION_LIMIT
+ # Compiler frames are small
diff --git a/python-3.3.0b1-fix_date_time_compiler.patch b/python-3.3.0b1-fix_date_time_compiler.patch
index 3fc2530..086d65e 100644
--- a/python-3.3.0b1-fix_date_time_compiler.patch
+++ b/python-3.3.0b1-fix_date_time_compiler.patch
@@ -2,9 +2,11 @@
Makefile.pre.in | 7 +++++++
1 file changed, 7 insertions(+)
---- a/Makefile.pre.in
-+++ b/Makefile.pre.in
-@@ -1743,11 +1743,18 @@ Modules/getbuildinfo.o: $(PARSER_OBJS) \
+Index: Python-3.14.0a7/Makefile.pre.in
+===================================================================
+--- Python-3.14.0a7.orig/Makefile.pre.in 2025-04-08 13:20:51.000000000 +0200
++++ Python-3.14.0a7/Makefile.pre.in 2025-04-12 23:55:34.668791223 +0200
+@@ -1855,11 +1855,18 @@
$(DTRACE_OBJS) \
$(srcdir)/Modules/getbuildinfo.c
$(CC) -c $(PY_CORE_CFLAGS) \
diff --git a/python314.changes b/python314.changes
index 9c3b53f..a113e78 100644
--- a/python314.changes
+++ b/python314.changes
@@ -1,3 +1,691 @@
+-------------------------------------------------------------------
+Sat Apr 12 21:50:29 UTC 2025 - Matej Cepl
+
+- Update to 3.14.0~a7:
+ - Tools/Demos
+ - gh-132121: Always escape non-printable Unicode characters in
+ pygettext.
+ - gh-131852: msgfmt no longer adds the POT-Creation-Date to
+ generated .mo files for consistency with GNU msgfmt.
+ - Tests
+ - gh-131277: Allow to unset one or more environment variables
+ at once via EnvironmentVarGuard.unset(). Patch by Bénédikt
+ Tran.
+ - gh-131050: test_ssl.test_dh_params is skipped if the
+ underlying TLS library does not support finite-field
+ ephemeral Diffie-Hellman.
+ - Security
+ - gh-131809: Update bundled libexpat to 2.7.1
+ - gh-131261: Upgrade to libexpat 2.7.0
+ - gh-121284: Fix bug in the folding of rfc2047 encoded-words
+ when flattening an email message using a modern email
+ policy. Previously when an encoded-word was too long for
+ a line, it would be decoded, split across lines, and
+ re-encoded. But commas and other special characters in the
+ original text could be left unencoded and unquoted. This
+ could theoretically be used to spoof header lines using a
+ carefully constructed encoded-word if the resulting rendered
+ email was transmitted or re-parsed.
+ - Library
+ - gh-132174: Fix function name in error message of
+ _interpreters.run_string.
+ - gh-132171: Fix crash of _interpreters.run_string on string
+ subclasses.
+ - gh-129204: Introduce new _PYTHON_SUBPROCESS_USE_POSIX_SPAWN
+ environment variable knob in subprocess to control the use of
+ os.posix_spawn().
+ - gh-132159: Do not shadow user arguments in generated
+ __new__() by decorator warnings.deprecated. Patch by Xuehai
+ Pan.
+ - gh-132168: The ctypes.py_object type now supports
+ subscription, making it a generic type.
+ - gh-84481: Add the zipfile.ZipFile.data_offset attribute,
+ which stores the offset to the beginning of ZIP data in a
+ file when available. When the zipfile.ZipFile is opened in
+ either mode 'w' or 'x' and the underlying file does not
+ support tell(), the value will be None instead.
+ - gh-132075: Fix possible use of socket address structures
+ with uninitialized members. Now all structure members are
+ initialized with zeroes by default.
+ - gh-118761: Improve import times by up to 27x for the string
+ module. Patch by Adam Turner.
+ - gh-125434: Display thread name in faulthandler. Patch by
+ Victor Stinner.
+ - gh-132002: Fix crash when deallocating contextvars.ContextVar
+ with weird unahashable string names.
+ - gh-131938: xml.etree.ElementTree: update the error message
+ when an element to remove via Element.remove is not
+ found. Patch by Bénédikt Tran.
+ - gh-115942: Add threading.RLock.locked(),
+ multiprocessing.Lock.locked(),
+ multiprocessing.RLock.locked(), and allow
+ multiprocessing.managers.SyncManager.Lock() and
+ multiprocessing.managers.SyncManager.RLock() to proxy
+ locked() call.
+ - gh-131974: Fix several thread-safety issues in ctypes on the
+ free threaded build.
+ - gh-118761: Improve the import time of the ast module by
+ extracting the unparse() function to a helper module.
+ - gh-107369: Improved performance of textwrap.dedent() by an
+ average of ~1.3x. Patch by Adam Turner.
+ - gh-131792: Improved performance of textwrap.dedent() by an
+ average of ~2.4x, (with improvements of up to 4x for large
+ inputs), and fixed a bug where blank lines with whitespace
+ characters other than space or horizontal tab were not
+ normalised to the newline. Patch by Adam Turner, Marius
+ Juston, and Pieter Eendebak.
+ - gh-131668: socket: Fix code parsing AF_BLUETOOTH socket
+ addresses.
+ - gh-60115: Support frozen modules for linecache.getline().
+ - gh-131492: Fix a resource leak when constructing a
+ gzip.GzipFile with a filename fails, for example when passing
+ an invalid compresslevel.
+ - gh-131435: 10-20% performance improvement of
+ random.randint().
+ - gh-131461: Fix ResourceWarning when constructing a
+ gzip.GzipFile in write mode with a broken file object.
+ - gh-125866: Deprecate the nturl2path module. Call
+ urllib.request.url2pathname() and pathname2url() instead.
+ - gh-126367: Fix issue where urllib.request.url2pathname()
+ raised OSError when given a Windows URI containing a colon
+ character not following a drive letter, such as before an
+ NTFS alternate data stream.
+ - gh-120144: Disable CALL event in bdb in monitoring backend
+ when we don’t need any new events on the code object to get a
+ better performance.
+ - gh-131358: Register cseuckr as an encoding alias for euc_kr.
+ - gh-131325: Fix sendfile fallback implementation to drain data
+ after writing to transport in asyncio.
+ - gh-90548: platform.libc_ver() can now detect and report the
+ version of musl on Alpine Linux.
+ - gh-129843: Fix incorrect argument passing in
+ warnings.warn_explicit().
+ - gh-70647: When creating a datetime object with an out of
+ range date a more informative error is raised.
+ - gh-130914: Allow graphlib.TopologicalSorter.prepare()
+ to be called more than once as long as sorting has not
+ started. Patch by Daniel Pope.
+ - gh-131236: Allow to generate multiple UUIDs at once via
+ python -m uuid --count.
+ - gh-126895: Fix readline in free-threaded build.
+ - gh-121468: $_asynctask is added as a pdb convenience variable
+ to access the current asyncio task if applicable.
+ - gh-118761: Improve import time of locale using lazy import
+ re. Patch by Semyon Moroz.
+ - gh-129598: Fix ast.unparse() when ast.Interactive contains
+ multiple statements.
+ - gh-85162: The http.server module now includes
+ built-in support for HTTPS servers exposed by
+ http.server.HTTPSServer. This functionality is exposed by the
+ command-line interface (python -m http.server) through the
+ --tls-cert, --tls-key and --tls-password-file options. Patch
+ by Semyon Moroz.
+ - gh-129463: The implementations of equality and hashing
+ for annotationlib.ForwardRef now use all attributes on
+ the object. Two ForwardRef objects are equal only if all
+ attributes are equal.
+ - gh-128593: annotationlib.ForwardRef objects no longer cache
+ their value when they are successfully evaluated. Successive
+ calls to annotationlib.ForwardRef.evaluate() may return
+ different values.
+ - gh-117779: Fix reading duplicated entries in zipfile by
+ name. Reading duplicated entries (except the last one) by
+ ZipInfo now emits a warning instead of raising an exception.
+ - gh-128715: The class of Structure/Union field descriptors
+ is now available as CField, and has new attributes to aid
+ debugging and introspection.
+ - gh-128055: Fix test.test_sysconfig.test_sysconfigdata_json
+ when running outside the build directory (eg. after
+ installing).
+ - gh-126037: xml.etree.ElementTree: Fix a crash in
+ Element.find, Element.findtext and Element.findall when
+ the tag to find implements an __eq__() method mutating the
+ element being queried. Patch by Bénédikt Tran.
+ - gh-127794: When headers are added to email.message.Message
+ objects, either through email.message.Message.__setitem__()
+ or email.message.Message.add_header(), the field name is now
+ validated according to RFC 5322, Section 2.2 and a ValueError
+ is raised if the field name contains any invalid characters.
+ - gh-123599: Deprecate pathlib.PurePath.as_uri(); use
+ pathlib.Path.as_uri() instead.
+ - gh-126033: xml.etree.ElementTree: Fix a crash in
+ Element.remove when the element is concurrently
+ mutated. Patch by Bénédikt Tran.
+ - gh-120144: Add the optional backend of sys.monitoring to bdb
+ and use it for pdb.
+ - gh-74598: Add fnmatch.filterfalse() for excluding names
+ matching a pattern. Patch by Bénédikt Tran.
+ - gh-114917: Add support for AI_NUMERICSERV in getaddrinfo
+ emulation
+ - bpo-17254: Added aliases for Thai Language using Microsoft
+ Code Pages.
+ - Documentation
+ - gh-131417: Mention asyncio.Future and asyncio.Task in generic
+ classes list.
+ - Core and Builtins
+ - gh-131798: Allow the JIT to remove an extra _TO_BOOL_BOOL
+ instruction after _CONTAINS_OP_SET by setting the return type
+ to bool.
+ - gh-132011: Fix crash when calling list.append() as an unbound
+ method.
+ - gh-131998: Fix a crash when using an unbound method
+ descriptor object in a function where a bound method
+ descriptor was used.
+ - gh-131591: Implement PEP 768 (Safe external debugger
+ interface for CPython). Add a new sys.remote_exec() function
+ to the sys module. This function schedules the execution of
+ a Python file in a separate process. Patch by Pablo Galindo,
+ Matt Wozniski and Ivona Stojanovic.
+ - gh-131798: Allow JIT to omit str guard in truthiness test
+ when str type is known.
+ - gh-131833: Add support for optionally dropping grouping
+ parentheses when using multiple exception types as per PEP
+ 758. Patch by Pablo Galindo
+ - gh-130924: Usage of a name in a function-scope annotation no
+ longer triggers creation of a cell for that variable. This
+ fixes a regression in earlier alphas of Python 3.14.
+ - gh-131800: Improve the experimental JIT’s ability to remove
+ type checks for certain subscripting operations.
+ - gh-131738: Compiler emits optimized code for builtin
+ any/all/tuple calls over a generator expression.
+ - gh-131719: Fix missing NULL check in _PyMem_FreeDelayed in
+ free-threaded build.
+ - gh-131670: Fix anext() failing on sync __anext__() raising an
+ exception.
+ - gh-131666: Fix signature of anext_awaitable.close
+ objects. Patch by Bénédikt Tran.
+ - gh-130415: Optimize comparison of two constants in JIT builds
+ - gh-129149: Add fast path for small and medium-size
+ integers in PyLong_FromInt32(), PyLong_FromUInt32(),
+ PyLong_FromInt64() and PyLong_FromUInt64(). Patch by Chris
+ Eibl.
+ - gh-130887: Optimize the AArch64 code generation for the
+ JIT. Patch by Diego Russo
+ - gh-130956: Optimize the AArch64 code generation for the
+ JIT. Patch by Diego Russo
+ - gh-130928: Fix error message when formatting bytes using the
+ 'i' flag. Patch by Maxim Ageev.
+ - gh-130935: Annotations at the class and module level
+ that are conditionally defined are now only reflected in
+ __annotations__ if the block they are in is executed. Patch
+ by Jelle Zijlstra.
+ - gh-130775: Do not crash on negative column and end_column in
+ ast locations.
+ - gh-130704: Optimize LOAD_FAST and its superinstruction form
+ to reduce reference counting overhead. These instructions are
+ replaced with faster variants that load borrowed references
+ onto the operand stack when we can prove that the reference
+ in the frame outlives the reference loaded onto the stack.
+ - gh-88887: Fixing multiprocessing Resource Tracker process
+ leaking, usually observed when running Python as PID 1.
+ - gh-130115: Fix an issue with thread identifiers being
+ sign-extended on some platforms.
+ - gh-99108: Add support for built-in implementation of HMAC
+ (RFC 2104) based on HACL*. Patch by Bénédikt Tran.
+ - gh-130080: Implement PEP 765: Disallow return/break/continue
+ that exit a finally block.
+ - gh-129900: Fix return codes inside SystemExit not getting
+ returned by the REPL.
+ - gh-128632: Disallow __classdict__ as the name of a type
+ parameter. Using this name would previously crash the
+ interpreter in some circumstances.
+ - gh-126703: Improve performance of builtin methods by using a
+ freelist.
+ - gh-126703: Improve performance of range by using a freelist.
+ - C API
+ - gh-131740: Update PyUnstable_GC_VisitObjects to traverse perm
+ gen.
+ - gh-131525: The PyTupleObject now caches the computed hash
+ value in the new field ob_hash.
+ - Build
+ - gh-131865: The DTrace build now properly passes the CC
+ and CFLAGS variables to the dtrace command when utilizing
+ SystemTap on Linux.
+ - gh-131675: Fix mimalloc library builds for 32-bit ARM
+ targets.
+ - gh-131691: clang-cl on Windows needs option /EHa to support
+ SEH (structured exception handling) correctly. Fix by Chris
+ Eibl.
+ - gh-131278: Add optimizing flag WITH_COMPUTED_GOTOS to Windows
+ builds for when using a compiler that supports it (currently
+ clang-cl). Patch by Chris Eibl.
+ - gh-130213: Update the vendored HACL* library to fix build
+ issues with older clang compilers.
+ - gh-130673: Fix potential KeyError when handling object
+ sections during JIT building process.
+- Update to 3.14.0~a6:
+ - Tools/Demos
+ - gh-130453: Make it possible to override default keywords in
+ pygettext.
+ - gh-85012: Correctly reset msgctxt when compiling messages
+ in msgfmt.
+ - gh-130453: Extend support for specifying custom keywords in
+ pygettext.
+ - gh-130195: Add warning messages when pygettext
+ unimplemented -a/--extract-all option is called.
+ - gh-130057: Add support for translator comments in
+ pygettext.py.
+ - gh-130025: The iOS testbed now correctly handles symlinks
+ used as Python framework references.
+ - gh-129911: Fix the keyword entry in the help output of
+ pygettext.
+ - Tests
+ - gh-129200: Multiple iOS testbed runners can now be started
+ at the same time without introducing an ambiguity over
+ simulator ownership.
+ - gh-130292: The iOS testbed will now run successfully on a
+ machine that has not previously run Xcode tests (such as CI
+ configurations).
+ - gh-130293: The tests of terminal colorization are no longer
+ sensitive to the value of the TERM variable in the testing
+ environment.
+ - gh-129401: Fix a flaky test in test_repr_rlock that checks
+ the representation of multiprocessing.RLock.
+ - gh-126332: Add unit tests for pyrepl.
+ - Security
+ - gh-127371: Avoid unbounded buffering for
+ tempfile.SpooledTemporaryFile.writelines(). Previously,
+ disk spillover was only checked after the lines iterator
+ had been exhausted. This is now done after each line is
+ written.
+ - Library
+ - gh-131204: Use monospace font from System Font Stack for
+ cross-platform support in difflib.HtmlDiff.
+ - gh-131196: Improve perfomance of uuid.UUID.hex and
+ uuid.UUID.__str__.
+ - gh-130940: The behavior of PyConfig.use_system_logger
+ was modified to be enabled by default on iOS. It remains
+ disabled by default on macOS.
+ - gh-131123: Supported completions for attributes of
+ convenience variables in pdb.
+ - gh-93096: Removed undocumented CLI python -m difflib. Use
+ python -m doctest Lib/difflib.py -v instead. Patch by
+ Semyon Moroz.
+ - gh-93096: Removed undocumented -t and -v arguments of
+ python -m pickle. Use python -m doctest Lib/pickle.py -v
+ instead. Patch by Semyon Moroz.
+ - gh-81267: Correct time.sleep() error message when an object
+ that cannot be interpreted as an integer or float is
+ provided.
+ - gh-93096: Removed undocumented -t and -v arguments
+ of python -m pickletools. Use python -m doctest
+ Lib/pickletools.py -v instead. Patch by Semyon Moroz.
+ - gh-131045: Fix issue with __contains__, values, and
+ pseudo-members for enum.Flag.
+ - gh-130959: Fix pure-Python implementation of
+ datetime.time.fromisoformat() to reject times with spaces
+ in fractional part (for example, 12:34:56.400 +02:00),
+ matching the C implementation. Patch by Michał Gorny.
+ - gh-130806: Deleting gzip.GzipFile before it is closed now
+ emits a ResourceWarning.
+ - gh-130637: Add validation for numeric response data in
+ poplib.POP3.stat() method
+ - gh-130665: Only apply locale to calendar CLI when set via
+ --locale and not via LANG environment variable.
+ - gh-130660: sys.ps1 and sys.ps2 are now restored after
+ code.interact() call.
+ - gh-130608: Remove dirs_exist_ok argument from
+ pathlib.Path.copy() and copy_into(). These methods are new
+ in Python 3.14.
+ - gh-130461: Remove .. index:: directives from the uuid
+ module documentation. These directives previously created
+ entries in the general index for getnode() as well as the
+ uuid1(), uuid3(), uuid4(), uuid5(), and uuid8() constructor
+ functions.
+ - gh-130379: The zipapp module now calculates the list of
+ files to be added to the archive before creating the
+ archive. This avoids accidentally including the target when
+ it is being created in the source directory.
+ - gh-82987: Inline breakpoints like breakpoint() or
+ pdb.set_trace() will always stop the program at calling
+ frame, ignoring the skip pattern (if any).
+ - gh-125377: at the beginning of the line in pdb
+ multi-line input will fill in a 4-space indentation now,
+ instead of inserting a \t character.
+ - gh-125413: Ensure the path returned from
+ pathlib.Path.copy() or move() has fresh info.
+ - gh-65697: stdlib configparser will now attempt to validate
+ that keys it writes will not result in file corruption
+ (creating a file unable to be accurately parsed by a future
+ read() call from the same parser). Attempting a corrupting
+ write() will raise an InvalidWriteError.
+ - gh-125413: Speed up Path.copy by making better use of info
+ internally.
+ - gh-130285: Fix corner case for random.sample() allowing the
+ counts parameter to specify an empty population. So now,
+ sample([], 0, counts=[]) and sample('abc', k=0, counts=[0,
+ 0, 0]) both give the same result as sample([], 0).
+ - gh-124703: Executing quit command in pdb will raise
+ bdb.BdbQuit when pdb is started from an interactive console
+ using breakpoint() or pdb.set_trace().
+ - gh-107773: Make datetime subclass __repr__() consistent
+ both implementations. Patch by Semyon Moroz.
+ - gh-130250: Fix regression in traceback.print_last().
+ - gh-123471: Make concurrent iterations over
+ itertools.batched safe under free-threading.
+ - gh-57537: Support breakpoints for zipimport modules on pdb
+ - gh-130230: Fix crash in pow() with only Decimal third
+ argument.
+ - gh-126944: Show explicit errors when required arguments of
+ pdb commands are missing
+ - gh-127750: Improve repr of functools.singledispatchmethod
+ methods and descriptors.
+ - gh-128520: Apply type conversion consistently in
+ pathlib.PurePath and Path methods can accept a path
+ object as an argument, such as match() and rename(). The
+ argument is now converted to path object if it lacks a
+ with_segments() attribute, and not otherwise.
+ - gh-118761: Reverts a change in the previous release
+ attempting to make some stdlib imports used within the
+ subprocess module lazy as this was causing errors during
+ __del__ finalizers calling methods such as terminate, or
+ kill, or send_signal.
+ - gh-130164: Fixed failure to raise TypeError in
+ inspect.Signature.bind() for positional-only arguments
+ provided by keyword when a variadic keyword argument (e.g.
+ **kwargs) is present.
+ - gh-130151: Fix reference leaks in _hashlib.hmac_new() and
+ _hashlib.hmac_digest(). Patch by Bénédikt Tran.
+ - gh-130145: Fix asyncio.AbstractEventloop.run_forever() when
+ another loop is already running.
+ - gh-130139: Fix bug where ast.parse() did not error on AST
+ input which is not of the correct type, when called with
+ optimize=False.
+ - gh-127260: Forbid the use of colon (“:”) as a fractional
+ component separator and other improvements to the
+ consistency of error raising between the C and Python
+ implementaitons of datetime.time.fromisoformat() and
+ datetime.datetime.fromisoformat(). Patch by Semyon Moroz.
+ - gh-85795: Using super() and __class__ closure variable in
+ user-defined methods of typing.NamedTuple subclasses is now
+ explicitly prohibited at runtime. Contributed by Bartosz
+ Sławecki in gh-130082.
+ - gh-118761: Improve import time of cmd by lazy importing
+ inspect and removing string. Patch by Semyon Moroz.
+ - gh-129726: Fix gzip.GzipFile raising an unraisable
+ exception during garbage collection when referring to
+ a temporary object by breaking the reference loop with
+ weakref.
+ - gh-127750: Remove broken functools.singledispatchmethod()
+ caching introduced in gh-85160. Achieve the same
+ performance using different optimization.
+ - gh-129948: Add support for shared set to
+ multiprocessing.managers.SyncManager via SyncManager.set().
+ - gh-129965: Update MIME types for .avi and .wav. Add MIME
+ types for .docx, .pptx, .xlsx, .epub, .flac, .m4a, .odg,
+ .odp, .ods, .odt, .oga, .ogg, .ogx and .weba. Patch by Hugo
+ van Kemenade.
+ - gh-129889: Support context manager protocol by
+ contextvars.Token. Patch by Andrew Svetlov.
+ - gh-97850: Update the deprecation warning of
+ importlib.abc.Loader.load_module().
+ - gh-129678: configparser.ConfigParser: do not write an empty
+ unnamed section
+ - gh-128641: Restore configparser.ConfigParser.read()
+ performance.
+ - gh-129569: Fix unicodedata.normalize() to always return a
+ built-in str object when given an input of a str subclass,
+ regardless of whether the string is already normalized.
+ - gh-128231: Execution of multiple statements in the new
+ REPL now stops immediately upon the first exception
+ encountered. Patch by Bartosz Sławecki.
+ - gh-96092: Fix bug in traceback.walk_stack() called with
+ None where it was skipping more frames than in prior
+ versions. This bug fix also changes walk_stack to walk the
+ stack in the frame where it was called rather than where it
+ first gets used.
+ - gh-129288: Add optional l2_cid and l2_bdaddr_type fields to
+ socket BTPROTO_L2CAP sockaddr tuple.
+ - gh-128703: Fix mimetypes.guess_type() to use default
+ mapping for empty Content-Type in registry.
+ - gh-128647: Eagerly write to buffers passed to
+ gzip.GzipFile’s readinto() and readinto1() implementations,
+ avoiding unnecessary allocations. Patch by Chris
+ Markiewicz.
+ - gh-128184: Improve display of annotationlib.ForwardRef
+ object within inspect.Signature representations. This
+ also fixes a NameError that was raised when using
+ dataclasses.dataclass() on classes with unresolvable
+ forward references.
+ - gh-128041: Add
+ concurrent.futures.ProcessPoolExecutor.terminate_workers()
+ and concurrent.futures.ProcessPoolExecutor.kill_workers()
+ as ways to terminate or kill all living worker processes
+ in the given pool. (Contributed by Charles Machalow in
+ gh-130849.)
+ - gh-127647: Add protocols io.Reader and io.Writer
+ as alternatives to typing.IO, typing.TextIO, and
+ typing.BinaryIO.
+ - gh-109798: Added additional information into error messages
+ in datetime, and made the messages more consistent between
+ the C and Python implementations. Patch by Semyon Moroz.
+ - gh-125746: Delay deprecated
+ zipimport.zipimporter.load_module() removal time to
+ 3.15. Use zipimport.zipimporter.exec_module() instead.
+ - gh-74028: Add the optional buffersize parameter to
+ concurrent.futures.Executor.map() to limit the number of
+ submitted tasks whose results have not yet been yielded. If
+ the buffer is full, iteration over the iterables pauses
+ until a result is yielded from the buffer.
+ - gh-124927: Non-printing characters are now properly handled
+ in the new REPL.
+ - gh-124096: Turn on virtual terminal mode and enable
+ bracketed paste in REPL on Windows console. (If the
+ terminal does not support bracketed paste, enabling it does
+ nothing.)
+ - gh-89083: Add uuid.uuid7() for generating UUIDv7 objects as
+ specified in RFC 9562. Patch by Bénédikt Tran.
+ - gh-89083: Add uuid.uuid6() for generating UUIDv6 objects as
+ specified in RFC 9562. Patch by Bénédikt Tran.
+ - gh-117151: Increase io.DEFAULT_BUFFER_SIZE from 8k to 128k
+ and adjust open() on platforms where os.fstat() provides a
+ st_blksize field (such as Linux) to use max(min(blocksize,
+ 8 MiB), io.DEFAULT_BUFFER_SIZE) rather than always
+ using the device block size. This should improve I/O
+ performance. Patch by Romain Morotti.
+ - gh-105499: Make types.UnionType an alias for
+ typing.Union. Both int | str and Union[int, str] now create
+ instances of the same type. Patch by Jelle Zijlstra.
+ - gh-93096: Document the command-line for mimetypes. It now
+ exits with 1 on failure instead of 0 and 2 on incorrect
+ command-line parameters instead of 1. Also, errors are
+ printed to stderr instead of stdout and their text is made
+ tighter. Patch by Oleg Iarygin and Hugo van Kemenade.
+ - Documentation
+ - gh-125722: Require Sphinx 8.2.0 or later to build the
+ Python documentation. Patch by Adam Turner.
+ - gh-129712: The wheel tags supported by each macOS universal
+ SDK option are now documented.
+ - gh-46236: C API: Document PyUnicode_RSplit(),
+ PyUnicode_Partition() and PyUnicode_RPartition().
+ - Core and Builtins
+ - gh-131141: Fix data race in sys.monitoring instrumentation
+ while registering callback.
+ - gh-130804: Fix support of unicode characters on Windows in
+ the new REPL.
+ - gh-130932: Fix incorrect exception handling in
+ _PyModule_IsPossiblyShadowing
+ - gh-122029: sys.setprofile() and sys.settrace() will not
+ generate a c_call event for INSTRUMENTED_CALL_FUNCTION_EX
+ if the callable is a method with a C function wrapped,
+ because we do not generate c_return event in such case.
+ - gh-129964: Fix JIT crash on Windows on Arm. Patch by Diego
+ Russo and Brandt Bucher.
+ - gh-130851: Fix a crash in the free threading build when
+ constructing a code object with co_consts that contains
+ instances of types that are not otherwise generated by the
+ bytecode compiler.
+ - gh-128534: Ensure that both left and right branches have
+ the same source for async for loops. Add these branches to
+ the co_branches() iterator.
+ - gh-130794: Fix memory leak in the free threaded build
+ when resizing a shared list or dictionary from multiple
+ short-lived threads.
+ - gh-130415: Improve JIT understanding of integers in boolean
+ context.
+ - gh-130382: Fix PyRefTracer_DESTROY not being sent from
+ Python/ceval.c Py_DECREF().
+ - gh-130574: Renumber RESUME from 149 to 128.
+ - gh-124878: Fix race conditions during runtime finalization
+ that could lead to accessing freed memory.
+ - gh-130415: Improve the experimental JIT’s ability to narrow
+ boolean values based on the results of truthiness tests.
+ - gh-130618: Fix a bug that was causing UnicodeDecodeError or
+ SystemError to be raised when using f-strings with lambda
+ expressions with non-ASCII characters. Patch by Pablo
+ Galindo
+ - gh-123044: Make sure that the location of branch targets in
+ match cases is in the body, not the pattern.
+ - gh-128534: Add branch monitoring (BRANCH_LEFT and
+ BRANCH_RIGHT events) for async for loops.
+ - gh-130163: Fix possible crashes related to concurrent
+ change and use of the sys module attributes.
+ - gh-122029: INSTRUMENTED_CALL_KW will expand the method
+ before monitoring to reflect the actual behavior more
+ accurately.
+ - gh-130415: Improve JIT’s ability to optimize strings in
+ boolean contexts.
+ - gh-130396: Use actual stack limits (from
+ pthread_getattr_np(3)) for linux, and other systems with
+ _GNU_SOURCE defined, when determining limits for C stack
+ protection.
+ - gh-128396: Fix a crash that occurs when calling locals()
+ inside an inline comprehension that uses the same local
+ variable as the outer frame scope where the variable is a
+ free or cell var.
+ - gh-129107: Fix two more bytearray functions for free
+ threading.
+ - gh-127705: Use tagged references (_PyStackRef) for
+ the default build as well as for the free-threading
+ build. This has a small negative performance impact
+ short-term but will enable larger speedups in the future
+ and signficantly reduce maintenance costs by allowing a
+ single implementation of tagged references in the future.
+ - gh-130094: Fix two race conditions involving concurrent
+ imports that could lead to spurious failures with
+ ModuleNotFoundError.
+ - gh-129107: Make bytearray iterator safe under free
+ threading.
+ - gh-115802: Use the more efficient “medium” code model for
+ JIT-compiled code on supported platforms.
+ - gh-107956: A build-details.json file is now install in the
+ platform-independent standard library directory (PEP 739
+ implementation).
+ - gh-116042: Fix location for SyntaxErrors of invalid escapes
+ in the tokenizer. Patch by Pablo Galindo
+ - gh-91079: Change C stack overflow protection to consider
+ the amount of stack consumed, rather than a counter. This
+ allows deeper recursion in many cases, but remains safe.
+ - gh-129715: Improve the experimental JIT’s handling of
+ returns to unknown callers.
+ - gh-129983: Fix data race in compile_template in sre.c.
+ - gh-129967: Fix a race condition in the free threading build
+ when repr(set) is called concurrently with set.clear().
+ - gh-129953: The internal (evaluation) stack is now spilled
+ to memory whenever execution esacpes from the interpreter
+ or JIT compiled code. This should have no observable effect
+ in either Python or builtin extensions, but will allow
+ various important optimizations in the future.
+ - gh-129515: Clarify syntax error messages for conditional
+ expressions when a statement is specified before an if or
+ after an else keyword.
+ - gh-129349: bytes.fromhex() and bytearray.fromhex() now
+ accepts ASCII bytes and bytes-like objects.
+ - gh-129149: Add fast path for medium-size integers in
+ PyLong_FromSsize_t(). Patch by Chris Eibl.
+ - gh-129107: Make the bytearray safe under free threading.
+ - gh-128974: Fix a crash in UnicodeError.__str__ when custom
+ attributes implement __str__() with side-effects. Patch by
+ Bénédikt Tran.
+ - gh-126085: typing.TypeAliasType now supports star
+ unpacking.
+ - gh-125331: from __future__ import barry_as_FLUFL now works
+ in more contexts, including when it is used in files,
+ with the -c flag, and in the REPL when there are multiple
+ statements on the same line. Previously, it worked only
+ on subsequent lines in the REPL, and when the appropriate
+ flags were passed directly to compile(). Patch by Pablo
+ Galindo.
+ - gh-121464: Make concurrent iterations over the same
+ enumerate() iterator safe under free-threading. See
+ Strategy for Iterators in Free Threading.
+ - gh-87790: Support underscore and comma as thousands
+ separators in the fractional part for floating-point
+ presentation types of the new-style string formatting (with
+ format() or f-strings). Patch by Sergey B Kirpichev.
+ - gh-124445: Fix specialization of generic aliases that are
+ generic over a typing.ParamSpec and have been specialized
+ with a nested type variable.
+ - gh-120608: Adapt reversed() for use in the free-theading
+ build. The reversed() is still not thread-safe in the sense
+ that concurrent iterations may see the same object, but
+ they will not corrupt the interpreter state.
+ - gh-100388: Fix the platform._sys_version() method when
+ __DATE__ is undefined at buildtime by changing default
+ buildtime datetime string to the UNIX epoch.
+ - bpo-44369: Improve syntax errors for incorrectly closed
+ strings. Patch by Pablo Galindo
+ - C API
+ - gh-111178: Fix PyCMethod API: replace size_t nargs with
+ Py_ssize_t nargs in PyCMethod. Patch by Victor Stinner.
+ - gh-130947: Add again PySequence_Fast() to the limited C
+ API. Patch by Victor Stinner.
+ - gh-128863: The following private functions are deprecated
+ and planned for removal in Python 3.18:
+ - _PyUnicodeWriter_Init(): replace
+ _PyUnicodeWriter_Init(&writer) with writer =
+ PyUnicodeWriter_Create(0).
+ - _PyUnicodeWriter_Finish(): replace
+ _PyUnicodeWriter_Finish(&writer) with
+ PyUnicodeWriter_Finish(writer).
+ - _PyUnicodeWriter_Dealloc(): replace
+ _PyUnicodeWriter_Dealloc(&writer) with
+ PyUnicodeWriter_Discard(writer).
+ - _PyUnicodeWriter_WriteChar(): replace
+ _PyUnicodeWriter_WriteChar(&writer, ch) with
+ PyUnicodeWriter_WriteChar(writer, ch).
+ - _PyUnicodeWriter_WriteStr(): replace
+ _PyUnicodeWriter_WriteStr(&writer, str) with
+ PyUnicodeWriter_WriteStr(writer, str).
+ - _PyUnicodeWriter_WriteSubstring(): replace
+ _PyUnicodeWriter_WriteSubstring(&writer, str, start, end)
+ with PyUnicodeWriter_WriteSubstring(writer, str, start,
+ end).
+ - _PyUnicodeWriter_WriteASCIIString(): replace
+ _PyUnicodeWriter_WriteASCIIString(&writer, str) with
+ PyUnicodeWriter_WriteUTF8(writer, str).
+ - _PyUnicodeWriter_WriteLatin1String(): replace
+ _PyUnicodeWriter_WriteLatin1String(&writer, str) with
+ PyUnicodeWriter_WriteUTF8(writer, str).
+ - _PyUnicodeWriter_Prepare(): (no replacement).
+ - _PyUnicodeWriter_PrepareKind(): (no replacement).
+ - The pythoncapi-compat project can be used to get these new
+ public functions on Python 3.13 and older.
+ - Patch by Victor Stinner.
+ - gh-45325: Add a new p format parameter to Py_BuildValue()
+ that allows to take a C integer and produce a Python bool
+ object. Patch by Pablo Galindo.
+ - Build
+ - gh-131035: Use -flto=thin for faster build times using
+ clang-cl on Windows. Patch by Chris Eibl.
+ - gh-130740: Ensure that Python.h is included before
+ stdbool.h unless pyconfig.h is included before or in some
+ platform-specific contexts.
+ - gh-130090: Building with PlatformToolset=ClangCL on Windows
+ now supports PGO (profile guided optimization). Patch by
+ Chris Eibl with invaluable support from Steve Dover.
+ - gh-129819: Allow building the JIT with the tailcall
+ interpreter.
+ - gh-129989: Fix a bug where the tailcall interpreter was
+ enabled when --without-tail-call-interp was provided to the
+ configure script.
+ - gh-129838: Don’t redefine _Py_NO_SANITIZE_UNDEFINED when
+ compiling with a recent GCC version and undefined sanitizer
+ enabled.
+ - gh-82909: #pragma-based linking with python3*.lib can
+ now be switched off with Py_NO_LINK_LIB. Patch by
+ Jean-Christophe Fillion-Robin.
+
-------------------------------------------------------------------
Mon Mar 10 15:44:31 UTC 2025 - Bernhard Wiedemann
diff --git a/python314.spec b/python314.spec
index 3d25295..498910b 100644
--- a/python314.spec
+++ b/python314.spec
@@ -157,8 +157,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~a5
-%define tarversion 3.14.0a5
+Version: 3.14.0~a7
+%define tarversion 3.14.0a7
%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 6c7d4a3..20369fd 100644
--- a/skip-test_pyobject_freed_is_freed.patch
+++ b/skip-test_pyobject_freed_is_freed.patch
@@ -2,11 +2,11 @@
Lib/test/test_capi/test_mem.py | 1 +
1 file changed, 1 insertion(+)
-Index: Python-3.13.0a3/Lib/test/test_capi/test_mem.py
+Index: Python-3.14.0a7/Lib/test/test_capi/test_mem.py
===================================================================
---- Python-3.13.0a3.orig/Lib/test/test_capi/test_mem.py
-+++ Python-3.13.0a3/Lib/test/test_capi/test_mem.py
-@@ -109,6 +109,7 @@ class PyMemDebugTests(unittest.TestCase)
+--- Python-3.14.0a7.orig/Lib/test/test_capi/test_mem.py 2025-04-12 23:55:23.949981777 +0200
++++ Python-3.14.0a7/Lib/test/test_capi/test_mem.py 2025-04-12 23:58:00.502480186 +0200
+@@ -114,6 +114,7 @@
def test_pyobject_forbidden_bytes_is_freed(self):
self.check_pyobject_is_freed('check_pyobject_forbidden_bytes_is_freed')
diff --git a/subprocess-raise-timeout.patch b/subprocess-raise-timeout.patch
index 92a02b9..09628b5 100644
--- a/subprocess-raise-timeout.patch
+++ b/subprocess-raise-timeout.patch
@@ -1,16 +1,21 @@
---
- Lib/test/test_subprocess.py | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
+ Lib/test/test_subprocess.py | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
---- a/Lib/test/test_subprocess.py
-+++ b/Lib/test/test_subprocess.py
-@@ -281,7 +281,8 @@ class ProcessTestCase(BaseTestCase):
- "time.sleep(3600)"],
- # Some heavily loaded buildbots (sparc Debian 3.x) require
- # this much time to start and print.
-- timeout=3)
-+ # OBS might require even more
-+ timeout=10)
- self.fail("Expected TimeoutExpired.")
- self.assertEqual(c.exception.output, b'BDFL')
+Index: Python-3.14.0a7/Lib/test/test_subprocess.py
+===================================================================
+--- Python-3.14.0a7.orig/Lib/test/test_subprocess.py 2025-04-12 23:55:25.222319332 +0200
++++ Python-3.14.0a7/Lib/test/test_subprocess.py 2025-04-12 23:56:40.450491892 +0200
+@@ -156,7 +156,11 @@
+ # child.
+ self.assertRaises(subprocess.TimeoutExpired, subprocess.call,
+ [sys.executable, "-c", "while True: pass"],
+- timeout=0.1)
++ # Some heavily loaded buildbots (sparc Debian 3.x) require
++ # this much time to start and print.
++ # timeout=3)
++ # OBS might require even more
++ timeout=10)
+ def test_check_call_zero(self):
+ # check_call() function with zero return code