forked from pool/python314
Accepting request 1273280 from devel:languages:python:Factory
- 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.
OBS-URL: https://build.opensuse.org/request/show/1273280
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python314?expand=0&rev=8
This commit is contained in:
@@ -4,9 +4,11 @@
|
|||||||
Lib/test/test_xml_etree.py | 10 ++++++++++
|
Lib/test/test_xml_etree.py | 10 ++++++++++
|
||||||
3 files changed, 17 insertions(+)
|
3 files changed, 17 insertions(+)
|
||||||
|
|
||||||
--- a/Lib/test/test_pyexpat.py
|
Index: Python-3.14.0a7/Lib/test/test_pyexpat.py
|
||||||
+++ b/Lib/test/test_pyexpat.py
|
===================================================================
|
||||||
@@ -791,6 +791,10 @@ class ReparseDeferralTest(unittest.TestC
|
--- 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'])
|
self.assertEqual(started, ['doc'])
|
||||||
|
|
||||||
def test_reparse_deferral_disabled(self):
|
def test_reparse_deferral_disabled(self):
|
||||||
@@ -17,9 +19,11 @@
|
|||||||
started = []
|
started = []
|
||||||
|
|
||||||
def start_element(name, _):
|
def start_element(name, _):
|
||||||
--- a/Lib/test/test_sax.py
|
Index: Python-3.14.0a7/Lib/test/test_sax.py
|
||||||
+++ b/Lib/test/test_sax.py
|
===================================================================
|
||||||
@@ -1241,6 +1241,9 @@ class ExpatReaderTest(XmlTestBase):
|
--- 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"<doc></doc>")
|
self.assertEqual(result.getvalue(), start + b"<doc></doc>")
|
||||||
|
|
||||||
@@ -29,11 +33,13 @@
|
|||||||
def test_flush_reparse_deferral_disabled(self):
|
def test_flush_reparse_deferral_disabled(self):
|
||||||
result = BytesIO()
|
result = BytesIO()
|
||||||
xmlgen = XMLGenerator(result)
|
xmlgen = XMLGenerator(result)
|
||||||
--- a/Lib/test/test_xml_etree.py
|
Index: Python-3.14.0a7/Lib/test/test_xml_etree.py
|
||||||
+++ b/Lib/test/test_xml_etree.py
|
===================================================================
|
||||||
@@ -121,6 +121,11 @@ ATTLIST_XML = """\
|
--- Python-3.14.0a7.orig/Lib/test/test_xml_etree.py 2025-04-12 23:55:25.550207629 +0200
|
||||||
</foo>
|
+++ 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"
|
+IS_SLE_15_7 = os.environ.get("SLE_VERSION", "") == "0150700"
|
||||||
+fails_with_expat_2_6_0 = (unittest.expectedFailure
|
+fails_with_expat_2_6_0 = (unittest.expectedFailure
|
||||||
@@ -43,7 +49,7 @@
|
|||||||
def checkwarnings(*filters, quiet=False):
|
def checkwarnings(*filters, quiet=False):
|
||||||
def decorator(test):
|
def decorator(test):
|
||||||
def newtest(*args, **kwargs):
|
def newtest(*args, **kwargs):
|
||||||
@@ -1504,9 +1509,11 @@ class XMLPullParserTest(unittest.TestCas
|
@@ -1521,9 +1526,11 @@
|
||||||
self.assert_event_tags(parser, [('end', 'root')])
|
self.assert_event_tags(parser, [('end', 'root')])
|
||||||
self.assertIsNone(parser.close())
|
self.assertIsNone(parser.close())
|
||||||
|
|
||||||
@@ -55,7 +61,7 @@
|
|||||||
def test_simple_xml_chunk_5(self):
|
def test_simple_xml_chunk_5(self):
|
||||||
self.test_simple_xml(chunk_size=5, flush=True)
|
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')])
|
self.assert_event_tags(parser, [('end', 'doc')])
|
||||||
|
|
||||||
|
|||||||
@@ -28,9 +28,11 @@ Co-authored-by: Lumír Balhar <frenzy.madness@gmail.com>
|
|||||||
Lib/test/test_sysconfig.py | 17 +++++++++++++--
|
Lib/test/test_sysconfig.py | 17 +++++++++++++--
|
||||||
2 files changed, 65 insertions(+), 3 deletions(-)
|
2 files changed, 65 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
--- a/Lib/sysconfig/__init__.py
|
Index: Python-3.14.0a7/Lib/sysconfig/__init__.py
|
||||||
+++ b/Lib/sysconfig/__init__.py
|
===================================================================
|
||||||
@@ -106,6 +106,11 @@ if os.name == 'nt':
|
--- 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:
|
else:
|
||||||
_INSTALL_SCHEMES['venv'] = _INSTALL_SCHEMES['posix_venv']
|
_INSTALL_SCHEMES['venv'] = _INSTALL_SCHEMES['posix_venv']
|
||||||
|
|
||||||
@@ -42,7 +44,7 @@ Co-authored-by: Lumír Balhar <frenzy.madness@gmail.com>
|
|||||||
def _get_implementation():
|
def _get_implementation():
|
||||||
return 'Python'
|
return 'Python'
|
||||||
|
|
||||||
@@ -167,13 +172,28 @@ if _HAS_USER_BASE:
|
@@ -169,13 +174,28 @@
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,7 +73,7 @@ Co-authored-by: Lumír Balhar <frenzy.madness@gmail.com>
|
|||||||
_BASE_EXEC_PREFIX = os.path.normpath(sys.base_exec_prefix)
|
_BASE_EXEC_PREFIX = os.path.normpath(sys.base_exec_prefix)
|
||||||
# Mutex guarding initialization of _CONFIG_VARS.
|
# Mutex guarding initialization of _CONFIG_VARS.
|
||||||
_CONFIG_VARS_LOCK = threading.RLock()
|
_CONFIG_VARS_LOCK = threading.RLock()
|
||||||
@@ -259,11 +279,40 @@ def _extend_dict(target_dict, other_dict
|
@@ -268,11 +288,40 @@
|
||||||
target_dict[key] = value
|
target_dict[key] = value
|
||||||
|
|
||||||
|
|
||||||
@@ -113,9 +115,11 @@ Co-authored-by: Lumír Balhar <frenzy.madness@gmail.com>
|
|||||||
if os.name == 'nt':
|
if os.name == 'nt':
|
||||||
# On Windows we want to substitute 'lib' for schemes rather
|
# On Windows we want to substitute 'lib' for schemes rather
|
||||||
# than the native value (without modifying vars, in case it
|
# than the native value (without modifying vars, in case it
|
||||||
--- a/Lib/test/test_sysconfig.py
|
Index: Python-3.14.0a7/Lib/test/test_sysconfig.py
|
||||||
+++ b/Lib/test/test_sysconfig.py
|
===================================================================
|
||||||
@@ -130,8 +130,19 @@ class TestSysConfig(unittest.TestCase):
|
--- 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 scheme in _INSTALL_SCHEMES:
|
||||||
for name in _INSTALL_SCHEMES[scheme]:
|
for name in _INSTALL_SCHEMES[scheme]:
|
||||||
expected = _INSTALL_SCHEMES[scheme][name].format(**config_vars)
|
expected = _INSTALL_SCHEMES[scheme][name].format(**config_vars)
|
||||||
@@ -136,7 +140,7 @@ Co-authored-by: Lumír Balhar <frenzy.madness@gmail.com>
|
|||||||
os.path.normpath(expected),
|
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)
|
self.assertTrue(os.path.isfile(config_h), config_h)
|
||||||
|
|
||||||
def test_get_scheme_names(self):
|
def test_get_scheme_names(self):
|
||||||
@@ -145,7 +149,7 @@ Co-authored-by: Lumír Balhar <frenzy.madness@gmail.com>
|
|||||||
if HAS_USER_BASE:
|
if HAS_USER_BASE:
|
||||||
wanted.extend(['nt_user', 'osx_framework_user', 'posix_user'])
|
wanted.extend(['nt_user', 'osx_framework_user', 'posix_user'])
|
||||||
self.assertEqual(get_scheme_names(), tuple(sorted(wanted)))
|
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())"
|
cmd = "-c", "import sysconfig; print(sysconfig.get_platform())"
|
||||||
self.assertEqual(py.call_real(*cmd), py.call_link(*cmd))
|
self.assertEqual(py.call_real(*cmd), py.call_link(*cmd))
|
||||||
|
|
||||||
|
|||||||
BIN
Python-3.14.0a5.tar.xz
(Stored with Git LFS)
BIN
Python-3.14.0a5.tar.xz
(Stored with Git LFS)
Binary file not shown.
File diff suppressed because one or more lines are too long
BIN
Python-3.14.0a7.tar.xz
(Stored with Git LFS)
Normal file
BIN
Python-3.14.0a7.tar.xz
(Stored with Git LFS)
Normal file
Binary file not shown.
1
Python-3.14.0a7.tar.xz.sigstore
Normal file
1
Python-3.14.0a7.tar.xz.sigstore
Normal file
@@ -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="}}
|
||||||
@@ -5,28 +5,32 @@ Subject: [PATCH] bpo-31046: ensurepip does not honour the value of $(prefix)
|
|||||||
|
|
||||||
Co-Authored-By: Xavier de Gaye <xdegaye@gmail.com>
|
Co-Authored-By: Xavier de Gaye <xdegaye@gmail.com>
|
||||||
---
|
---
|
||||||
Doc/library/ensurepip.rst | 9 +++--
|
Doc/library/ensurepip.rst | 12 +++++-
|
||||||
Lib/ensurepip/__init__.py | 18 +++++++---
|
Lib/ensurepip/__init__.py | 18 +++++++---
|
||||||
Lib/test/test_ensurepip.py | 11 ++++++
|
Lib/test/test_ensurepip.py | 11 ++++++
|
||||||
Makefile.pre.in | 4 +-
|
Makefile.pre.in | 4 +-
|
||||||
Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst | 1
|
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
|
create mode 100644 Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst
|
||||||
|
|
||||||
--- a/Doc/library/ensurepip.rst
|
Index: Python-3.14.0a7/Doc/library/ensurepip.rst
|
||||||
+++ b/Doc/library/ensurepip.rst
|
===================================================================
|
||||||
@@ -59,8 +59,9 @@ is at least as recent as the one availab
|
--- 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
|
By default, ``pip`` is installed into the current virtual environment
|
||||||
(if one is active) or into the system site packages (if there is no
|
(if one is active) or into the system site packages (if there is no
|
||||||
active virtual environment). The installation location can be controlled
|
active virtual environment). The installation location can be controlled
|
||||||
-through two additional command line options:
|
-through two additional command line options:
|
||||||
+through some additional command line options:
|
+through some additional command line options:
|
||||||
|
+
|
||||||
|
+.. option:: --prefix <dir>
|
||||||
|
+
|
||||||
|
+ Installs ``pip`` using the given directory prefix.
|
||||||
|
|
||||||
+* ``--prefix <dir>``: Installs ``pip`` using the given directory prefix.
|
.. option:: --root <dir>
|
||||||
* :samp:`--root {dir}`: Installs ``pip`` relative to the given root directory
|
|
||||||
rather than the root of the currently active virtual environment (if any)
|
@@ -102,7 +106,7 @@
|
||||||
or the default root for the current Python installation.
|
|
||||||
@@ -92,7 +93,7 @@ Module API
|
|
||||||
Returns a string specifying the available version of pip that will be
|
Returns a string specifying the available version of pip that will be
|
||||||
installed when bootstrapping an environment.
|
installed when bootstrapping an environment.
|
||||||
|
|
||||||
@@ -35,7 +39,7 @@ Co-Authored-By: Xavier de Gaye <xdegaye@gmail.com>
|
|||||||
altinstall=False, default_pip=False, \
|
altinstall=False, default_pip=False, \
|
||||||
verbosity=0)
|
verbosity=0)
|
||||||
|
|
||||||
@@ -102,6 +103,8 @@ Module API
|
@@ -112,6 +116,8 @@
|
||||||
If *root* is ``None``, then installation uses the default install location
|
If *root* is ``None``, then installation uses the default install location
|
||||||
for the current environment.
|
for the current environment.
|
||||||
|
|
||||||
@@ -44,7 +48,7 @@ Co-Authored-By: Xavier de Gaye <xdegaye@gmail.com>
|
|||||||
*upgrade* indicates whether or not to upgrade an existing installation
|
*upgrade* indicates whether or not to upgrade an existing installation
|
||||||
of an earlier version of ``pip`` to the available version.
|
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
|
*verbosity* controls the level of output to :data:`sys.stdout` from the
|
||||||
bootstrapping operation.
|
bootstrapping operation.
|
||||||
|
|
||||||
@@ -53,9 +57,11 @@ Co-Authored-By: Xavier de Gaye <xdegaye@gmail.com>
|
|||||||
.. audit-event:: ensurepip.bootstrap root ensurepip.bootstrap
|
.. audit-event:: ensurepip.bootstrap root ensurepip.bootstrap
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
--- a/Lib/ensurepip/__init__.py
|
Index: Python-3.14.0a7/Lib/ensurepip/__init__.py
|
||||||
+++ b/Lib/ensurepip/__init__.py
|
===================================================================
|
||||||
@@ -106,27 +106,27 @@ def _disable_pip_configuration_settings(
|
--- 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
|
os.environ['PIP_CONFIG_FILE'] = os.devnull
|
||||||
|
|
||||||
|
|
||||||
@@ -88,7 +94,7 @@ Co-Authored-By: Xavier de Gaye <xdegaye@gmail.com>
|
|||||||
|
|
||||||
Note that calling this function will alter both sys.path and os.environ.
|
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]
|
args = ["install", "--no-cache-dir", "--no-index", "--find-links", tmpdir]
|
||||||
if root:
|
if root:
|
||||||
args += ["--root", root]
|
args += ["--root", root]
|
||||||
@@ -97,7 +103,7 @@ Co-Authored-By: Xavier de Gaye <xdegaye@gmail.com>
|
|||||||
if upgrade:
|
if upgrade:
|
||||||
args += ["--upgrade"]
|
args += ["--upgrade"]
|
||||||
if user:
|
if user:
|
||||||
@@ -238,6 +240,11 @@ def _main(argv=None):
|
@@ -238,6 +240,11 @@
|
||||||
help="Install everything relative to this alternate root directory.",
|
help="Install everything relative to this alternate root directory.",
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
@@ -109,7 +115,7 @@ Co-Authored-By: Xavier de Gaye <xdegaye@gmail.com>
|
|||||||
"--altinstall",
|
"--altinstall",
|
||||||
action="store_true",
|
action="store_true",
|
||||||
default=False,
|
default=False,
|
||||||
@@ -256,6 +263,7 @@ def _main(argv=None):
|
@@ -256,6 +263,7 @@
|
||||||
|
|
||||||
return _bootstrap(
|
return _bootstrap(
|
||||||
root=args.root,
|
root=args.root,
|
||||||
@@ -117,9 +123,11 @@ Co-Authored-By: Xavier de Gaye <xdegaye@gmail.com>
|
|||||||
upgrade=args.upgrade,
|
upgrade=args.upgrade,
|
||||||
user=args.user,
|
user=args.user,
|
||||||
verbosity=args.verbosity,
|
verbosity=args.verbosity,
|
||||||
--- a/Lib/test/test_ensurepip.py
|
Index: Python-3.14.0a7/Lib/test/test_ensurepip.py
|
||||||
+++ b/Lib/test/test_ensurepip.py
|
===================================================================
|
||||||
@@ -100,6 +100,17 @@ class TestBootstrap(EnsurepipMixin, unit
|
--- 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,
|
unittest.mock.ANY,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -137,9 +145,11 @@ Co-Authored-By: Xavier de Gaye <xdegaye@gmail.com>
|
|||||||
def test_bootstrapping_with_user(self):
|
def test_bootstrapping_with_user(self):
|
||||||
ensurepip.bootstrap(user=True)
|
ensurepip.bootstrap(user=True)
|
||||||
|
|
||||||
--- a/Makefile.pre.in
|
Index: Python-3.14.0a7/Makefile.pre.in
|
||||||
+++ b/Makefile.pre.in
|
===================================================================
|
||||||
@@ -2228,7 +2228,7 @@ install: @FRAMEWORKINSTALLFIRST@ @INSTAL
|
--- 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="" ;; \
|
install|*) ensurepip="" ;; \
|
||||||
esac; \
|
esac; \
|
||||||
$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
|
$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
|
||||||
@@ -148,7 +158,7 @@ Co-Authored-By: Xavier de Gaye <xdegaye@gmail.com>
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
.PHONY: altinstall
|
.PHONY: altinstall
|
||||||
@@ -2239,7 +2239,7 @@ altinstall: commoninstall
|
@@ -2333,7 +2333,7 @@
|
||||||
install|*) ensurepip="--altinstall" ;; \
|
install|*) ensurepip="--altinstall" ;; \
|
||||||
esac; \
|
esac; \
|
||||||
$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
|
$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
|
||||||
@@ -157,7 +167,9 @@ Co-Authored-By: Xavier de Gaye <xdegaye@gmail.com>
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
.PHONY: commoninstall
|
.PHONY: commoninstall
|
||||||
--- /dev/null
|
Index: Python-3.14.0a7/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst
|
||||||
+++ b/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 @@
|
@@ -0,0 +1 @@
|
||||||
+A directory prefix can now be specified when using :mod:`ensurepip`.
|
+A directory prefix can now be specified when using :mod:`ensurepip`.
|
||||||
|
|||||||
@@ -2,9 +2,11 @@
|
|||||||
Lib/test/test_compile.py | 5 +++++
|
Lib/test/test_compile.py | 5 +++++
|
||||||
1 file changed, 5 insertions(+)
|
1 file changed, 5 insertions(+)
|
||||||
|
|
||||||
--- a/Lib/test/test_compile.py
|
Index: Python-3.14.0a7/Lib/test/test_compile.py
|
||||||
+++ b/Lib/test/test_compile.py
|
===================================================================
|
||||||
@@ -25,6 +25,9 @@ from test.support import (script_helper,
|
--- 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.bytecode_helper import instructions_with_positions
|
||||||
from test.support.os_helper import FakePath
|
from test.support.os_helper import FakePath
|
||||||
|
|
||||||
@@ -14,19 +16,19 @@
|
|||||||
class TestSpecifics(unittest.TestCase):
|
class TestSpecifics(unittest.TestCase):
|
||||||
|
|
||||||
def compile_single(self, source):
|
def compile_single(self, source):
|
||||||
@@ -121,6 +124,7 @@ class TestSpecifics(unittest.TestCase):
|
@@ -120,6 +123,7 @@
|
||||||
self.assertEqual(d['z'], 12)
|
self.assertEqual(d['z'], 12)
|
||||||
|
|
||||||
@unittest.skipIf(support.is_wasi, "exhausts limited stack on WASI")
|
@unittest.skipIf(support.is_wasi, "exhausts limited stack on WASI")
|
||||||
+ @unittest.skipIf(IS_SLE_15_6 and IS_32bit, "fails on 15.6 i586")
|
+ @unittest.skipIf(IS_SLE_15_6 and IS_32bit, "fails on 15.6 i586")
|
||||||
@support.skip_emscripten_stack_overflow()
|
@support.skip_emscripten_stack_overflow()
|
||||||
def test_extended_arg(self):
|
def test_extended_arg(self):
|
||||||
repeat = int(get_c_recursion_limit() * 0.9)
|
repeat = 100
|
||||||
@@ -710,6 +714,7 @@ class TestSpecifics(unittest.TestCase):
|
@@ -709,6 +713,7 @@
|
||||||
|
|
||||||
@support.cpython_only
|
@support.cpython_only
|
||||||
@unittest.skipIf(support.is_wasi, "exhausts limited stack on WASI")
|
@unittest.skipIf(support.is_wasi, "exhausts limited stack on WASI")
|
||||||
+ @unittest.skipIf(IS_SLE_15_6 and IS_32bit, "fails on 15.6 i586")
|
+ @unittest.skipIf(IS_SLE_15_6 and IS_32bit, "fails on 15.6 i586")
|
||||||
@support.skip_emscripten_stack_overflow()
|
@support.skip_emscripten_stack_overflow()
|
||||||
def test_compiler_recursion_limit(self):
|
def test_compiler_recursion_limit(self):
|
||||||
# Expected limit is Py_C_RECURSION_LIMIT
|
# Compiler frames are small
|
||||||
|
|||||||
@@ -2,9 +2,11 @@
|
|||||||
Makefile.pre.in | 7 +++++++
|
Makefile.pre.in | 7 +++++++
|
||||||
1 file changed, 7 insertions(+)
|
1 file changed, 7 insertions(+)
|
||||||
|
|
||||||
--- a/Makefile.pre.in
|
Index: Python-3.14.0a7/Makefile.pre.in
|
||||||
+++ b/Makefile.pre.in
|
===================================================================
|
||||||
@@ -1743,11 +1743,18 @@ Modules/getbuildinfo.o: $(PARSER_OBJS) \
|
--- 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) \
|
$(DTRACE_OBJS) \
|
||||||
$(srcdir)/Modules/getbuildinfo.c
|
$(srcdir)/Modules/getbuildinfo.c
|
||||||
$(CC) -c $(PY_CORE_CFLAGS) \
|
$(CC) -c $(PY_CORE_CFLAGS) \
|
||||||
|
|||||||
@@ -1,3 +1,691 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Sat Apr 12 21:50:29 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
|
||||||
|
|
||||||
|
- 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: <tab> 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 <bwiedemann@suse.com>
|
Mon Mar 10 15:44:31 UTC 2025 - Bernhard Wiedemann <bwiedemann@suse.com>
|
||||||
|
|
||||||
|
|||||||
@@ -60,7 +60,7 @@
|
|||||||
%bcond_with profileopt
|
%bcond_with profileopt
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
# No experimental_jit in SLES, there's no clang >=18
|
# No experimental_jit in SLES, there's no clang >=19
|
||||||
%if 0%{?suse_version} <= 1600
|
%if 0%{?suse_version} <= 1600
|
||||||
%bcond_with experimental_jit
|
%bcond_with experimental_jit
|
||||||
%else
|
%else
|
||||||
@@ -157,8 +157,8 @@
|
|||||||
# _md5.cpython-38m-x86_64-linux-gnu.so
|
# _md5.cpython-38m-x86_64-linux-gnu.so
|
||||||
%define dynlib() %{sitedir}/lib-dynload/%{1}.cpython-%{abi_tag}-%{archname}-%{_os}%{?_gnu}%{?armsuffix}.so
|
%define dynlib() %{sitedir}/lib-dynload/%{1}.cpython-%{abi_tag}-%{archname}-%{_os}%{?_gnu}%{?armsuffix}.so
|
||||||
Name: %{python_pkg_name}%{psuffix}
|
Name: %{python_pkg_name}%{psuffix}
|
||||||
Version: 3.14.0~a5
|
Version: 3.14.0~a7
|
||||||
%define tarversion 3.14.0a5
|
%define tarversion 3.14.0a7
|
||||||
%define tarname Python-%{tarversion}
|
%define tarname Python-%{tarversion}
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Python 3 Interpreter
|
Summary: Python 3 Interpreter
|
||||||
@@ -260,7 +260,7 @@ BuildRequires: python3-python-docs-theme >= 2022.1
|
|||||||
|
|
||||||
%if %{with experimental_jit}
|
%if %{with experimental_jit}
|
||||||
# needed for experimental_jit
|
# needed for experimental_jit
|
||||||
BuildRequires: clang
|
BuildRequires: clang19 llvm19
|
||||||
BuildRequires: llvm
|
BuildRequires: llvm
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
@@ -719,8 +719,8 @@ done
|
|||||||
for library in \
|
for library in \
|
||||||
array _asyncio binascii _bisect _bz2 cmath _codecs_* \
|
array _asyncio binascii _bisect _bz2 cmath _codecs_* \
|
||||||
_contextvars _csv _ctypes _datetime _decimal fcntl grp \
|
_contextvars _csv _ctypes _datetime _decimal fcntl grp \
|
||||||
_hashlib _heapq _json _lsprof _lzma math mmap _multibytecodec \
|
_hashlib _heapq _hmac _json _lsprof _lzma math mmap \
|
||||||
_multiprocessing _pickle _posixshmem \
|
_multibytecodec _multiprocessing _pickle _posixshmem \
|
||||||
_posixsubprocess _queue _random resource select _ssl _socket \
|
_posixsubprocess _queue _random resource select _ssl _socket \
|
||||||
_statistics _struct syslog termios _testbuffer _testimportmultiple \
|
_statistics _struct syslog termios _testbuffer _testimportmultiple \
|
||||||
_testmultiphase unicodedata zlib _ctypes_test _testinternalcapi _testcapi \
|
_testmultiphase unicodedata zlib _ctypes_test _testinternalcapi _testcapi \
|
||||||
@@ -1014,6 +1014,8 @@ fi
|
|||||||
%if %{primary_interpreter}
|
%if %{primary_interpreter}
|
||||||
%{_rpmconfigdir}/macros.d/macros.python3
|
%{_rpmconfigdir}/macros.d/macros.python3
|
||||||
%endif
|
%endif
|
||||||
|
# build-details
|
||||||
|
%{_libdir}/python3*/build-details.json
|
||||||
|
|
||||||
# binary parts
|
# binary parts
|
||||||
%dir %{sitedir}/lib-dynload
|
%dir %{sitedir}/lib-dynload
|
||||||
@@ -1040,6 +1042,7 @@ fi
|
|||||||
%{dynlib grp}
|
%{dynlib grp}
|
||||||
%{dynlib _hashlib}
|
%{dynlib _hashlib}
|
||||||
%{dynlib _heapq}
|
%{dynlib _heapq}
|
||||||
|
%{dynlib _hmac}
|
||||||
%{dynlib _interpchannels}
|
%{dynlib _interpchannels}
|
||||||
%{dynlib _interpqueues}
|
%{dynlib _interpqueues}
|
||||||
%{dynlib _interpreters}
|
%{dynlib _interpreters}
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
Lib/test/test_capi/test_mem.py | 1 +
|
Lib/test/test_capi/test_mem.py | 1 +
|
||||||
1 file changed, 1 insertion(+)
|
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.14.0a7.orig/Lib/test/test_capi/test_mem.py 2025-04-12 23:55:23.949981777 +0200
|
||||||
+++ Python-3.13.0a3/Lib/test/test_capi/test_mem.py
|
+++ Python-3.14.0a7/Lib/test/test_capi/test_mem.py 2025-04-12 23:58:00.502480186 +0200
|
||||||
@@ -109,6 +109,7 @@ class PyMemDebugTests(unittest.TestCase)
|
@@ -114,6 +114,7 @@
|
||||||
def test_pyobject_forbidden_bytes_is_freed(self):
|
def test_pyobject_forbidden_bytes_is_freed(self):
|
||||||
self.check_pyobject_is_freed('check_pyobject_forbidden_bytes_is_freed')
|
self.check_pyobject_is_freed('check_pyobject_forbidden_bytes_is_freed')
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,21 @@
|
|||||||
---
|
---
|
||||||
Lib/test/test_subprocess.py | 3 ++-
|
Lib/test/test_subprocess.py | 6 +++++-
|
||||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
--- a/Lib/test/test_subprocess.py
|
Index: Python-3.14.0a7/Lib/test/test_subprocess.py
|
||||||
+++ b/Lib/test/test_subprocess.py
|
===================================================================
|
||||||
@@ -281,7 +281,8 @@ class ProcessTestCase(BaseTestCase):
|
--- Python-3.14.0a7.orig/Lib/test/test_subprocess.py 2025-04-12 23:55:25.222319332 +0200
|
||||||
"time.sleep(3600)"],
|
+++ Python-3.14.0a7/Lib/test/test_subprocess.py 2025-04-12 23:56:40.450491892 +0200
|
||||||
# Some heavily loaded buildbots (sparc Debian 3.x) require
|
@@ -156,7 +156,11 @@
|
||||||
# this much time to start and print.
|
# child.
|
||||||
- timeout=3)
|
self.assertRaises(subprocess.TimeoutExpired, subprocess.call,
|
||||||
+ # OBS might require even more
|
[sys.executable, "-c", "while True: pass"],
|
||||||
+ timeout=10)
|
- timeout=0.1)
|
||||||
self.fail("Expected TimeoutExpired.")
|
+ # Some heavily loaded buildbots (sparc Debian 3.x) require
|
||||||
self.assertEqual(c.exception.output, b'BDFL')
|
+ # 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
|
||||||
|
|||||||
Reference in New Issue
Block a user