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:
2025-04-29 14:41:31 +00:00
committed by Git OBS Bridge
13 changed files with 809 additions and 87 deletions

View File

@@ -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"<doc></doc>")
@@ -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 = """\
</foo>
"""
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')])

View File

@@ -28,9 +28,11 @@ Co-authored-by: Lumír Balhar <frenzy.madness@gmail.com>
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 <frenzy.madness@gmail.com>
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 <frenzy.madness@gmail.com>
_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 <frenzy.madness@gmail.com>
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 <frenzy.madness@gmail.com>
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 <frenzy.madness@gmail.com>
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))

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:74e83f26de1e4fb9eef1b56492cff92508834bb71ac13f5c580438ce9f093682
size 22859900

File diff suppressed because one or more lines are too long

3
Python-3.14.0a7.tar.xz Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:71adbcec3ac9edf93308e55cfb4184f2eb4b16fda2bb0a5a382929ed29c8386d
size 23015952

View 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="}}

View File

@@ -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>
---
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 <dir>
+
+ Installs ``pip`` using the given directory prefix.
+* ``--prefix <dir>``: 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 <dir>
@@ -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 <xdegaye@gmail.com>
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 <xdegaye@gmail.com>
*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 <xdegaye@gmail.com>
.. 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 <xdegaye@gmail.com>
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 <xdegaye@gmail.com>
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 <xdegaye@gmail.com>
"--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 <xdegaye@gmail.com>
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 <xdegaye@gmail.com>
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 <xdegaye@gmail.com>
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 <xdegaye@gmail.com>
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`.

View File

@@ -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

View File

@@ -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) \

View File

@@ -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 dont 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 JITs 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.GzipFiles 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 JITs 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 JITs 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 JITs 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: Dont 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>

View File

@@ -60,7 +60,7 @@
%bcond_with profileopt
%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
%bcond_with experimental_jit
%else
@@ -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
@@ -260,7 +260,7 @@ BuildRequires: python3-python-docs-theme >= 2022.1
%if %{with experimental_jit}
# needed for experimental_jit
BuildRequires: clang
BuildRequires: clang19 llvm19
BuildRequires: llvm
%endif
@@ -719,8 +719,8 @@ done
for library in \
array _asyncio binascii _bisect _bz2 cmath _codecs_* \
_contextvars _csv _ctypes _datetime _decimal fcntl grp \
_hashlib _heapq _json _lsprof _lzma math mmap _multibytecodec \
_multiprocessing _pickle _posixshmem \
_hashlib _heapq _hmac _json _lsprof _lzma math mmap \
_multibytecodec _multiprocessing _pickle _posixshmem \
_posixsubprocess _queue _random resource select _ssl _socket \
_statistics _struct syslog termios _testbuffer _testimportmultiple \
_testmultiphase unicodedata zlib _ctypes_test _testinternalcapi _testcapi \
@@ -1014,6 +1014,8 @@ fi
%if %{primary_interpreter}
%{_rpmconfigdir}/macros.d/macros.python3
%endif
# build-details
%{_libdir}/python3*/build-details.json
# binary parts
%dir %{sitedir}/lib-dynload
@@ -1040,6 +1042,7 @@ fi
%{dynlib grp}
%{dynlib _hashlib}
%{dynlib _heapq}
%{dynlib _hmac}
%{dynlib _interpchannels}
%{dynlib _interpqueues}
%{dynlib _interpreters}

View File

@@ -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')

View File

@@ -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