Accepting request 1166573 from home:dgarcia:branches:devel:languages:python:Factory
- Remove not needed upstream patches: * libexpat260.patch * CVE-2023-6597-TempDir-cleaning-symlink.patch, bsc#1219666 - Update to 3.11.9: * Security - gh-115398: Allow controlling Expat >=2.6.0 reparse deferral (CVE-2023-52425, bsc#1219559) by adding five new methods: xml.etree.ElementTree.XMLParser.flush() xml.etree.ElementTree.XMLPullParser.flush() xml.parsers.expat.xmlparser.GetReparseDeferralEnabled() xml.parsers.expat.xmlparser.SetReparseDeferralEnabled() xml.sax.expatreader.ExpatParser.flush() - gh-115399: Update bundled libexpat to 2.6.0 - gh-115243: Fix possible crashes in collections.deque.index() when the deque is concurrently modified. - gh-114572: ssl.SSLContext.cert_store_stats() and ssl.SSLContext.get_ca_certs() now correctly lock access to the certificate store, when the ssl.SSLContext is shared across multiple threads. * Core and Builtins - gh-116296: Fix possible refleak in object.__reduce__() internal error handling. - gh-116034: Fix location of the error on a failed assertion. - gh-115823: Properly calculate error ranges in the parser when raising SyntaxError exceptions caused by invalid byte sequences. Patch by Pablo Galindo - gh-112087: For an empty reverse iterator for list will be reduced to reversed(). Patch by Donghee Na. - gh-115011: Setters for members with an unsigned integer type now support the same range of valid values for objects that has a OBS-URL: https://build.opensuse.org/request/show/1166573 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python311?expand=0&rev=119
This commit is contained in:
parent
246a8799b3
commit
fe7f29284c
@ -1,165 +0,0 @@
|
||||
---
|
||||
Lib/tempfile.py | 16 +
|
||||
Lib/test/test_tempfile.py | 113 ++++++++++
|
||||
Misc/NEWS.d/next/Library/2022-12-01-16-57-44.gh-issue-91133.LKMVCV.rst | 2
|
||||
3 files changed, 131 insertions(+)
|
||||
|
||||
--- a/Lib/tempfile.py
|
||||
+++ b/Lib/tempfile.py
|
||||
@@ -286,6 +286,22 @@ def _resetperms(path):
|
||||
_dont_follow_symlinks(chflags, path, 0)
|
||||
_dont_follow_symlinks(_os.chmod, path, 0o700)
|
||||
|
||||
+def _dont_follow_symlinks(func, path, *args):
|
||||
+ # Pass follow_symlinks=False, unless not supported on this platform.
|
||||
+ if func in _os.supports_follow_symlinks:
|
||||
+ func(path, *args, follow_symlinks=False)
|
||||
+ elif _os.name == 'nt' or not _os.path.islink(path):
|
||||
+ func(path, *args)
|
||||
+
|
||||
+def _resetperms(path):
|
||||
+ try:
|
||||
+ chflags = _os.chflags
|
||||
+ except AttributeError:
|
||||
+ pass
|
||||
+ else:
|
||||
+ _dont_follow_symlinks(chflags, path, 0)
|
||||
+ _dont_follow_symlinks(_os.chmod, path, 0o700)
|
||||
+
|
||||
|
||||
# User visible interfaces.
|
||||
|
||||
--- a/Lib/test/test_tempfile.py
|
||||
+++ b/Lib/test/test_tempfile.py
|
||||
@@ -1673,6 +1673,103 @@ class TestTemporaryDirectory(BaseTestCas
|
||||
new_flags = os.stat(dir1).st_flags
|
||||
self.assertEqual(new_flags, old_flags)
|
||||
|
||||
+ @os_helper.skip_unless_symlink
|
||||
+ def test_cleanup_with_symlink_modes(self):
|
||||
+ # cleanup() should not follow symlinks when fixing mode bits (#91133)
|
||||
+ with self.do_create(recurse=0) as d2:
|
||||
+ file1 = os.path.join(d2, 'file1')
|
||||
+ open(file1, 'wb').close()
|
||||
+ dir1 = os.path.join(d2, 'dir1')
|
||||
+ os.mkdir(dir1)
|
||||
+ for mode in range(8):
|
||||
+ mode <<= 6
|
||||
+ with self.subTest(mode=format(mode, '03o')):
|
||||
+ def test(target, target_is_directory):
|
||||
+ d1 = self.do_create(recurse=0)
|
||||
+ symlink = os.path.join(d1.name, 'symlink')
|
||||
+ os.symlink(target, symlink,
|
||||
+ target_is_directory=target_is_directory)
|
||||
+ try:
|
||||
+ os.chmod(symlink, mode, follow_symlinks=False)
|
||||
+ except NotImplementedError:
|
||||
+ pass
|
||||
+ try:
|
||||
+ os.chmod(symlink, mode)
|
||||
+ except FileNotFoundError:
|
||||
+ pass
|
||||
+ os.chmod(d1.name, mode)
|
||||
+ d1.cleanup()
|
||||
+ self.assertFalse(os.path.exists(d1.name))
|
||||
+
|
||||
+ with self.subTest('nonexisting file'):
|
||||
+ test('nonexisting', target_is_directory=False)
|
||||
+ with self.subTest('nonexisting dir'):
|
||||
+ test('nonexisting', target_is_directory=True)
|
||||
+
|
||||
+ with self.subTest('existing file'):
|
||||
+ os.chmod(file1, mode)
|
||||
+ old_mode = os.stat(file1).st_mode
|
||||
+ test(file1, target_is_directory=False)
|
||||
+ new_mode = os.stat(file1).st_mode
|
||||
+ self.assertEqual(new_mode, old_mode,
|
||||
+ '%03o != %03o' % (new_mode, old_mode))
|
||||
+
|
||||
+ with self.subTest('existing dir'):
|
||||
+ os.chmod(dir1, mode)
|
||||
+ old_mode = os.stat(dir1).st_mode
|
||||
+ test(dir1, target_is_directory=True)
|
||||
+ new_mode = os.stat(dir1).st_mode
|
||||
+ self.assertEqual(new_mode, old_mode,
|
||||
+ '%03o != %03o' % (new_mode, old_mode))
|
||||
+
|
||||
+ @unittest.skipUnless(hasattr(os, 'chflags'), 'requires os.chflags')
|
||||
+ @os_helper.skip_unless_symlink
|
||||
+ def test_cleanup_with_symlink_flags(self):
|
||||
+ # cleanup() should not follow symlinks when fixing flags (#91133)
|
||||
+ flags = stat.UF_IMMUTABLE | stat.UF_NOUNLINK
|
||||
+ self.check_flags(flags)
|
||||
+
|
||||
+ with self.do_create(recurse=0) as d2:
|
||||
+ file1 = os.path.join(d2, 'file1')
|
||||
+ open(file1, 'wb').close()
|
||||
+ dir1 = os.path.join(d2, 'dir1')
|
||||
+ os.mkdir(dir1)
|
||||
+ def test(target, target_is_directory):
|
||||
+ d1 = self.do_create(recurse=0)
|
||||
+ symlink = os.path.join(d1.name, 'symlink')
|
||||
+ os.symlink(target, symlink,
|
||||
+ target_is_directory=target_is_directory)
|
||||
+ try:
|
||||
+ os.chflags(symlink, flags, follow_symlinks=False)
|
||||
+ except NotImplementedError:
|
||||
+ pass
|
||||
+ try:
|
||||
+ os.chflags(symlink, flags)
|
||||
+ except FileNotFoundError:
|
||||
+ pass
|
||||
+ os.chflags(d1.name, flags)
|
||||
+ d1.cleanup()
|
||||
+ self.assertFalse(os.path.exists(d1.name))
|
||||
+
|
||||
+ with self.subTest('nonexisting file'):
|
||||
+ test('nonexisting', target_is_directory=False)
|
||||
+ with self.subTest('nonexisting dir'):
|
||||
+ test('nonexisting', target_is_directory=True)
|
||||
+
|
||||
+ with self.subTest('existing file'):
|
||||
+ os.chflags(file1, flags)
|
||||
+ old_flags = os.stat(file1).st_flags
|
||||
+ test(file1, target_is_directory=False)
|
||||
+ new_flags = os.stat(file1).st_flags
|
||||
+ self.assertEqual(new_flags, old_flags)
|
||||
+
|
||||
+ with self.subTest('existing dir'):
|
||||
+ os.chflags(dir1, flags)
|
||||
+ old_flags = os.stat(dir1).st_flags
|
||||
+ test(dir1, target_is_directory=True)
|
||||
+ new_flags = os.stat(dir1).st_flags
|
||||
+ self.assertEqual(new_flags, old_flags)
|
||||
+
|
||||
@support.cpython_only
|
||||
def test_del_on_collection(self):
|
||||
# A TemporaryDirectory is deleted when garbage collected
|
||||
@@ -1847,6 +1944,22 @@ class TestTemporaryDirectory(BaseTestCas
|
||||
|
||||
def check_flags(self, flags):
|
||||
# skip the test if these flags are not supported (ex: FreeBSD 13)
|
||||
+ filename = os_helper.TESTFN
|
||||
+ try:
|
||||
+ open(filename, "w").close()
|
||||
+ try:
|
||||
+ os.chflags(filename, flags)
|
||||
+ except OSError as exc:
|
||||
+ # "OSError: [Errno 45] Operation not supported"
|
||||
+ self.skipTest(f"chflags() doesn't support flags "
|
||||
+ f"{flags:#b}: {exc}")
|
||||
+ else:
|
||||
+ os.chflags(filename, 0)
|
||||
+ finally:
|
||||
+ os_helper.unlink(filename)
|
||||
+
|
||||
+ def check_flags(self, flags):
|
||||
+ # skip the test if these flags are not supported (ex: FreeBSD 13)
|
||||
filename = os_helper.TESTFN
|
||||
try:
|
||||
open(filename, "w").close()
|
||||
--- /dev/null
|
||||
+++ b/Misc/NEWS.d/next/Library/2022-12-01-16-57-44.gh-issue-91133.LKMVCV.rst
|
||||
@@ -0,0 +1,2 @@
|
||||
+Fix a bug in :class:`tempfile.TemporaryDirectory` cleanup, which now no longer
|
||||
+dereferences symlinks when working around file system permission errors.
|
BIN
Python-3.11.8.tar.xz
(Stored with Git LFS)
BIN
Python-3.11.8.tar.xz
(Stored with Git LFS)
Binary file not shown.
@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCAAdFiEEz9yiRbEEPPKl+Xhl/+h0BBaL2EcFAmXCppEACgkQ/+h0BBaL
|
||||
2Edi6g//dRagLHlrmPyCrch7ZqAazLMXTHb3cerXg41QEqfwIl7osk1HnqObBgVN
|
||||
w8vgXy9ZlxWwv+cWvwrNLY1AWEfarhwRzWLkikHwycBIIgep1HmSvyU4wLKaN7mI
|
||||
c/LxGHfQZ6suu3gCVmRFBoB/ACpT0P5qvDpoUehrADE6wCqs0vbRiW/InLCTUpOy
|
||||
zZ+5ncK302JtafJkjIGf2VNB4yQATk/v7fO/z43sEQqhvzgtlWlXNmtCKshGBIt1
|
||||
mJpLEs8gCq97jObfbN7FkC3Ti/kEan7PbjDzsDKcBv/jJudvWywHtMzplgbjtOYG
|
||||
AgBM8bXbVC119BwmfBpvAxgsVKmmGi9d2McJUPOcIHKiHCb17fU0srRbSV47rE9N
|
||||
PWEHgQC2ICbdT9N1oimOEp16eYt5omFWfDy5C91oqUnBFtz8wqiNmyeQimegMgBe
|
||||
cDpOY73C2H7Vi6rX9EbyrG+LOkfJ6Vt5rTCa+zbAPy2ihz/ajA7UNH72t1uuzFQZ
|
||||
pPdUBNhtGxr5EB3zAqBxDuoh9DMOmDZACbT+npHR3Y7KaXTHYIe7Ot8CCrLpH+Ra
|
||||
8Yt6/CCD7KnsCWz6pfyH+ulIL4vw+dPnC809+neiXhiUuM5qiIr9K7HidzXi0Lwj
|
||||
sb8MVErS8dURFZP48e1dfbyJqsAvAosiGmjDDqbrlAC5attKjg8=
|
||||
=VFx6
|
||||
-----END PGP SIGNATURE-----
|
BIN
Python-3.11.9.tar.xz
(Stored with Git LFS)
Normal file
BIN
Python-3.11.9.tar.xz
(Stored with Git LFS)
Normal file
Binary file not shown.
16
Python-3.11.9.tar.xz.asc
Normal file
16
Python-3.11.9.tar.xz.asc
Normal file
@ -0,0 +1,16 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCAAdFiEEz9yiRbEEPPKl+Xhl/+h0BBaL2EcFAmYNMEcACgkQ/+h0BBaL
|
||||
2EeHhxAAuuIM9bl0dgAWOjbgRjCeXR8aFdfcI4dkO7bZrUy8eKbM+XCvPUUvloRJ
|
||||
vzGkxYyTmI4kcNPOHfscUwH7AVVij8nGv7WeaXBUZGIXNwfHwvqOxvYvSsNNNFnr
|
||||
70yJB7Df8/2s0XqFx3X1aWcnyMDerWKpfJ/VI/NPmCVxkYXGshuTTSFcCMTSFBQB
|
||||
sNrIb5NWAsBF4R85uRQDlCg1AoyaKOdJNQkPo1Nrjol1ExJ+MHE7+E+QL9pQkUWG
|
||||
SBISPUhJySBAegxolw6YR5dz1L4nukueQDJz3NizUeQGDvH7h1ImY8cypRi44U61
|
||||
SUUHhBfmUBiC2dS/tTQawySULWcgbkV4GJ6cJZfDd95uffd4S/GDJCa2wCE2UTlA
|
||||
XzQHwbcnIeoL064gX7ruBuFHJ6n/Oz7nZkFqbH2aqLTAWgLiUq31xH3HY734sL6X
|
||||
zIJQRbcK1EM7cnNjKMVPlnHpAeKbsbHbU6yzWwZ7reIoyWlZ7vEGrfXO7Kmul93K
|
||||
wVaWu0AiOY566ugekdDx4cKV+FQN6oppAN63yTfPJ2Ddcmxs4KNrtozw9OAgDTPE
|
||||
GTPFD6V1CMuyQj/jOpAmbj+4bRD4Mx3u2PSittvrIeopxrXPsGGSZ5kdl62Xa2+A
|
||||
DzKyYNXzcmxqS9lGdFb+OWCTyAIXxwZrdz1Q61g5xDvR9z/wZiI=
|
||||
=Br9/
|
||||
-----END PGP SIGNATURE-----
|
@ -1,108 +0,0 @@
|
||||
From f2eebf3c38eae77765247791576b437ec25ccfe2 Mon Sep 17 00:00:00 2001
|
||||
From: Serhiy Storchaka <storchaka@gmail.com>
|
||||
Date: Sun, 11 Feb 2024 12:08:39 +0200
|
||||
Subject: [PATCH] gh-115133: Fix tests for XMLPullParser with Expat 2.6.0
|
||||
(GH-115164)
|
||||
|
||||
Feeding the parser by too small chunks defers parsing to prevent
|
||||
CVE-2023-52425. Future versions of Expat may be more reactive.
|
||||
(cherry picked from commit 4a08e7b3431cd32a0daf22a33421cd3035343dc4)
|
||||
|
||||
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
|
||||
---
|
||||
Lib/test/test_xml_etree.py | 58 ++++++++++++-------
|
||||
...-02-08-14-21-28.gh-issue-115133.ycl4ko.rst | 2 +
|
||||
2 files changed, 38 insertions(+), 22 deletions(-)
|
||||
create mode 100644 Misc/NEWS.d/next/Library/2024-02-08-14-21-28.gh-issue-115133.ycl4ko.rst
|
||||
|
||||
diff --git a/Lib/test/test_xml_etree.py b/Lib/test/test_xml_etree.py
|
||||
index 267982a8233c92..fa03f381fac92a 100644
|
||||
--- a/Lib/test/test_xml_etree.py
|
||||
+++ b/Lib/test/test_xml_etree.py
|
||||
@@ -13,6 +13,7 @@
|
||||
import operator
|
||||
import os
|
||||
import pickle
|
||||
+import pyexpat
|
||||
import sys
|
||||
import textwrap
|
||||
import types
|
||||
@@ -120,6 +121,10 @@
|
||||
</foo>
|
||||
"""
|
||||
|
||||
+fails_with_expat_2_6_0 = (unittest.expectedFailure
|
||||
+ if pyexpat.version_info >= (2, 6, 0) else
|
||||
+ lambda test: test)
|
||||
+
|
||||
def checkwarnings(*filters, quiet=False):
|
||||
def decorator(test):
|
||||
def newtest(*args, **kwargs):
|
||||
@@ -1400,28 +1405,37 @@ def assert_event_tags(self, parser, expected, max_events=None):
|
||||
self.assertEqual([(action, elem.tag) for action, elem in events],
|
||||
expected)
|
||||
|
||||
- def test_simple_xml(self):
|
||||
- for chunk_size in (None, 1, 5):
|
||||
- with self.subTest(chunk_size=chunk_size):
|
||||
- parser = ET.XMLPullParser()
|
||||
- self.assert_event_tags(parser, [])
|
||||
- self._feed(parser, "<!-- comment -->\n", chunk_size)
|
||||
- self.assert_event_tags(parser, [])
|
||||
- self._feed(parser,
|
||||
- "<root>\n <element key='value'>text</element",
|
||||
- chunk_size)
|
||||
- self.assert_event_tags(parser, [])
|
||||
- self._feed(parser, ">\n", chunk_size)
|
||||
- self.assert_event_tags(parser, [('end', 'element')])
|
||||
- self._feed(parser, "<element>text</element>tail\n", chunk_size)
|
||||
- self._feed(parser, "<empty-element/>\n", chunk_size)
|
||||
- self.assert_event_tags(parser, [
|
||||
- ('end', 'element'),
|
||||
- ('end', 'empty-element'),
|
||||
- ])
|
||||
- self._feed(parser, "</root>\n", chunk_size)
|
||||
- self.assert_event_tags(parser, [('end', 'root')])
|
||||
- self.assertIsNone(parser.close())
|
||||
+ def test_simple_xml(self, chunk_size=None):
|
||||
+ parser = ET.XMLPullParser()
|
||||
+ self.assert_event_tags(parser, [])
|
||||
+ self._feed(parser, "<!-- comment -->\n", chunk_size)
|
||||
+ self.assert_event_tags(parser, [])
|
||||
+ self._feed(parser,
|
||||
+ "<root>\n <element key='value'>text</element",
|
||||
+ chunk_size)
|
||||
+ self.assert_event_tags(parser, [])
|
||||
+ self._feed(parser, ">\n", chunk_size)
|
||||
+ self.assert_event_tags(parser, [('end', 'element')])
|
||||
+ self._feed(parser, "<element>text</element>tail\n", chunk_size)
|
||||
+ self._feed(parser, "<empty-element/>\n", chunk_size)
|
||||
+ self.assert_event_tags(parser, [
|
||||
+ ('end', 'element'),
|
||||
+ ('end', 'empty-element'),
|
||||
+ ])
|
||||
+ self._feed(parser, "</root>\n", chunk_size)
|
||||
+ self.assert_event_tags(parser, [('end', 'root')])
|
||||
+ self.assertIsNone(parser.close())
|
||||
+
|
||||
+ @fails_with_expat_2_6_0
|
||||
+ def test_simple_xml_chunk_1(self):
|
||||
+ self.test_simple_xml(chunk_size=1)
|
||||
+
|
||||
+ @fails_with_expat_2_6_0
|
||||
+ def test_simple_xml_chunk_5(self):
|
||||
+ self.test_simple_xml(chunk_size=5)
|
||||
+
|
||||
+ def test_simple_xml_chunk_22(self):
|
||||
+ self.test_simple_xml(chunk_size=22)
|
||||
|
||||
def test_feed_while_iterating(self):
|
||||
parser = ET.XMLPullParser()
|
||||
diff --git a/Misc/NEWS.d/next/Library/2024-02-08-14-21-28.gh-issue-115133.ycl4ko.rst b/Misc/NEWS.d/next/Library/2024-02-08-14-21-28.gh-issue-115133.ycl4ko.rst
|
||||
new file mode 100644
|
||||
index 00000000000000..6f1015235cc25d
|
||||
--- /dev/null
|
||||
+++ b/Misc/NEWS.d/next/Library/2024-02-08-14-21-28.gh-issue-115133.ycl4ko.rst
|
||||
@@ -0,0 +1,2 @@
|
||||
+Fix tests for :class:`~xml.etree.ElementTree.XMLPullParser` with Expat
|
||||
+2.6.0.
|
@ -1,3 +1,261 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Apr 8 05:44:04 UTC 2024 - Daniel Garcia <daniel.garcia@suse.com>
|
||||
|
||||
- Remove not needed upstream patches:
|
||||
* libexpat260.patch
|
||||
* CVE-2023-6597-TempDir-cleaning-symlink.patch, bsc#1219666
|
||||
|
||||
- Update to 3.11.9:
|
||||
* Security
|
||||
- gh-115398: Allow controlling Expat >=2.6.0 reparse deferral
|
||||
(CVE-2023-52425, bsc#1219559) by adding five new methods:
|
||||
xml.etree.ElementTree.XMLParser.flush()
|
||||
xml.etree.ElementTree.XMLPullParser.flush()
|
||||
xml.parsers.expat.xmlparser.GetReparseDeferralEnabled()
|
||||
xml.parsers.expat.xmlparser.SetReparseDeferralEnabled()
|
||||
xml.sax.expatreader.ExpatParser.flush()
|
||||
- gh-115399: Update bundled libexpat to 2.6.0
|
||||
- gh-115243: Fix possible crashes in collections.deque.index()
|
||||
when the deque is concurrently modified.
|
||||
- gh-114572: ssl.SSLContext.cert_store_stats() and
|
||||
ssl.SSLContext.get_ca_certs() now correctly lock access to the
|
||||
certificate store, when the ssl.SSLContext is shared across
|
||||
multiple threads.
|
||||
* Core and Builtins
|
||||
- gh-116296: Fix possible refleak in object.__reduce__() internal
|
||||
error handling.
|
||||
- gh-116034: Fix location of the error on a failed assertion.
|
||||
- gh-115823: Properly calculate error ranges in the parser when
|
||||
raising SyntaxError exceptions caused by invalid byte sequences.
|
||||
Patch by Pablo Galindo
|
||||
- gh-112087: For an empty reverse iterator for list will be
|
||||
reduced to reversed(). Patch by Donghee Na.
|
||||
- gh-115011: Setters for members with an unsigned integer type now
|
||||
support the same range of valid values for objects that has a
|
||||
__index__() method as for int.
|
||||
- gh-96497: Fix incorrect resolution of mangled class variables
|
||||
used in assignment expressions in comprehensions.
|
||||
* Library
|
||||
- gh-117310: Fixed an unlikely early & extra Py_DECREF triggered
|
||||
crash in ssl when creating a new _ssl._SSLContext if CPython was
|
||||
built implausibly such that the default cipher list is empty or
|
||||
the SSL library it was linked against reports a failure from its
|
||||
C SSL_CTX_set_cipher_list() API.
|
||||
- gh-117178: Fix regression in lazy loading of self-referential
|
||||
modules, introduced in gh-114781.
|
||||
- gh-117084: Fix zipfile extraction for directory entries with the
|
||||
name containing backslashes on Windows.
|
||||
- gh-117110: Fix a bug that prevents subclasses of typing.Any to
|
||||
be instantiated with arguments. Patch by Chris Fu.
|
||||
- gh-90872: On Windows, subprocess.Popen.wait() no longer calls
|
||||
WaitForSingleObject() with a negative timeout: pass 0 ms if the
|
||||
timeout is negative. Patch by Victor Stinner.
|
||||
- gh-116957: configparser: Don’t leave ConfigParser values in an
|
||||
invalid state (stored as a list instead of a str) after an
|
||||
earlier read raised DuplicateSectionError or
|
||||
DuplicateOptionError.
|
||||
- gh-90095: Ignore empty lines and comments in .pdbrc
|
||||
- gh-116764: Restore support of None and other false values in
|
||||
urllib.parse functions parse_qs() and parse_qsl(). Also, they
|
||||
now raise a TypeError for non-zero integers and non-empty
|
||||
sequences.
|
||||
- gh-116811: In PathFinder.invalidate_caches, delegate to
|
||||
MetadataPathFinder.invalidate_caches.
|
||||
- gh-116600: Fix repr() for global Flag members.
|
||||
- gh-116484: Change automatically generated tkinter.Checkbutton
|
||||
widget names to avoid collisions with automatically generated
|
||||
tkinter.ttk.Checkbutton widget names within the same parent
|
||||
widget.
|
||||
- gh-116401: Fix blocking os.fwalk() and shutil.rmtree() on
|
||||
opening named pipe.
|
||||
- gh-116143: Fix a race in pydoc _start_server, eliminating a
|
||||
window in which _start_server can return a thread that is
|
||||
“serving” but without a docserver set.
|
||||
- gh-116325: typing: raise SyntaxError instead of AttributeError
|
||||
on forward references as empty strings.
|
||||
- gh-90535: Fix support of interval values > 1 in
|
||||
logging.TimedRotatingFileHandler for when='MIDNIGHT' and
|
||||
when='Wx'.
|
||||
- gh-115978: Disable preadv(), readv(), pwritev(), and writev() on
|
||||
WASI.
|
||||
- Under wasmtime for WASI 0.2, these functions don’t pass
|
||||
test_posix
|
||||
(https://github.com/bytecodealliance/wasmtime/issues/7830).
|
||||
- gh-88352: Fix the computation of the next rollover time in the
|
||||
logging.TimedRotatingFileHandler handler. computeRollover() now
|
||||
always returns a timestamp larger than the specified time and
|
||||
works correctly during the DST change. doRollover() no longer
|
||||
overwrite the already rolled over file, saving from data loss
|
||||
when run at midnight or during repeated time at the DST change.
|
||||
- gh-87115: Set __main__.__spec__ to None when running a script
|
||||
with pdb
|
||||
- gh-76511: Fix UnicodeEncodeError in email.Message.as_string()
|
||||
that results when a message that claims to be in the ascii
|
||||
character set actually has non-ascii characters. Non-ascii
|
||||
characters are now replaced with the U+FFFD replacement
|
||||
character, like in the replace error handler.
|
||||
- gh-75988: Fixed unittest.mock.create_autospec() to pass the call
|
||||
through to the wrapped object to return the real result.
|
||||
- gh-115881: Fix issue where ast.parse() would incorrectly flag
|
||||
conditional context managers (such as with (x() if y else z()):
|
||||
...) as invalid syntax if feature_version=(3, 8) was passed.
|
||||
This reverts changes to the grammar made as part of gh-94949.
|
||||
- gh-115886: Fix silent truncation of the name with an embedded
|
||||
null character in multiprocessing.shared_memory.SharedMemory.
|
||||
- gh-115809: Improve algorithm for computing which rolled-over log
|
||||
files to delete in logging.TimedRotatingFileHandler. It is now
|
||||
reliable for handlers without namer and with arbitrary
|
||||
deterministic namer that leaves the datetime part in the file
|
||||
name unmodified.
|
||||
- gh-74668: urllib.parse functions parse_qs() and parse_qsl() now
|
||||
support bytes arguments containing raw and percent-encoded
|
||||
non-ASCII data.
|
||||
- gh-67044: csv.writer() now always quotes or escapes '\r' and
|
||||
'\n', regardless of lineterminator value.
|
||||
- gh-115712: csv.writer() now quotes empty fields if delimiter is
|
||||
a space and skipinitialspace is true and raises exception if
|
||||
quoting is not possible.
|
||||
- gh-115618: Fix improper decreasing the reference count for None
|
||||
argument in property methods getter(), setter() and deleter().
|
||||
- gh-115570: A DeprecationWarning is no longer omitted on access
|
||||
to the __doc__ attributes of the deprecated typing.io and
|
||||
typing.re pseudo-modules.
|
||||
- gh-112006: Fix inspect.unwrap() for types with the __wrapper__
|
||||
data descriptor.
|
||||
- gh-101293: Support callables with the __call__() method and
|
||||
types with __new__() and __init__() methods set to class
|
||||
methods, static methods, bound methods, partial functions, and
|
||||
other types of methods and descriptors in
|
||||
inspect.Signature.from_callable().
|
||||
- gh-115392: Fix a bug in doctest where incorrect line numbers
|
||||
would be reported for decorated functions.
|
||||
- gh-114563: Fix several format() bugs when using the C
|
||||
implementation of Decimal: * memory leak in some rare cases when
|
||||
using the z format option (coerce negative 0) * incorrect output
|
||||
when applying the z format option to type F (fixed-point with
|
||||
capital NAN / INF) * incorrect output when applying the # format
|
||||
option (alternate form)
|
||||
- gh-115197: urllib.request no longer resolves the hostname before
|
||||
checking it against the system’s proxy bypass list on macOS and
|
||||
Windows.
|
||||
- gh-115198: Fix support of Docutils >= 0.19 in distutils.
|
||||
- gh-115165: Most exceptions are now ignored when attempting to
|
||||
set the __orig_class__ attribute on objects returned when
|
||||
calling typing generic aliases (including generic aliases
|
||||
created using typing.Annotated). Previously only AttributeError
|
||||
was ignored. Patch by Dave Shawley.
|
||||
- gh-115133: Fix tests for XMLPullParser with Expat 2.6.0.
|
||||
- gh-115059: io.BufferedRandom.read1() now flushes the underlying
|
||||
write buffer.
|
||||
- gh-79382: Trailing ** no longer allows to match files and
|
||||
non-existing paths in recursive glob().
|
||||
- gh-114763: Protect modules loaded with importlib.util.LazyLoader
|
||||
from race conditions when multiple threads try to access
|
||||
attributes before the loading is complete.
|
||||
- gh-97959: Fix rendering class methods, bound methods, method and
|
||||
function aliases in pydoc. Class methods no longer have “method
|
||||
of builtins.type instance” note. Corresponding notes are now
|
||||
added for class and unbound methods. Method and function aliases
|
||||
now have references to the module or the class where the origin
|
||||
was defined if it differs from the current. Bound methods are
|
||||
now listed in the static methods section. Methods of builtin
|
||||
classes are now supported as well as methods of Python classes.
|
||||
- gh-112281: Allow creating union of types for typing.Annotated
|
||||
with unhashable metadata.
|
||||
- gh-111775: Fix importlib.resources.simple.ResourceHandle.open()
|
||||
for text mode, added missed stream argument.
|
||||
- gh-90095: Make .pdbrc and -c work with any valid pdb commands.
|
||||
- gh-107155: Fix incorrect output of help(x) where x is a lambda
|
||||
function, which has an __annotations__ dictionary attribute with
|
||||
a "return" key.
|
||||
- gh-105866: Fixed _get_slots bug which caused error when defining
|
||||
dataclasses with slots and a weakref_slot.
|
||||
- gh-60346: Fix ArgumentParser inconsistent with parse_known_args.
|
||||
- gh-100985: Update HTTPSConnection to consistently wrap IPv6
|
||||
Addresses when using a proxy.
|
||||
- gh-100884: email: fix misfolding of comma in address-lists over
|
||||
multiple lines in combination with unicode encoding.
|
||||
- gh-95782: Fix io.BufferedReader.tell(),
|
||||
io.BufferedReader.seek(), _pyio.BufferedReader.tell(),
|
||||
io.BufferedRandom.tell(), io.BufferedRandom.seek() and
|
||||
_pyio.BufferedRandom.tell() being able to return negative
|
||||
offsets.
|
||||
- gh-96310: Fix a traceback in argparse when all options in a
|
||||
mutually exclusive group are suppressed.
|
||||
- gh-93205: Fixed a bug in
|
||||
logging.handlers.TimedRotatingFileHandler where multiple
|
||||
rotating handler instances pointing to files with the same name
|
||||
but different extensions would conflict and not delete the
|
||||
correct files.
|
||||
- bpo-44865: Add missing call to localization function in
|
||||
argparse.
|
||||
- bpo-43952: Fix multiprocessing.connection.Listener.accept() to
|
||||
accept empty bytes as authkey. Not accepting empty bytes as key
|
||||
causes it to hang indefinitely.
|
||||
- bpo-42125: linecache: get module name from __spec__ if
|
||||
available. This allows getting source code for the __main__
|
||||
module when a custom loader is used.
|
||||
- gh-66543: Make mimetypes.guess_type() properly parsing of URLs
|
||||
with only a host name, URLs containing fragment or query, and
|
||||
filenames with only a UNC sharepoint on Windows. Based on patch
|
||||
by Dong-hee Na.
|
||||
- bpo-33775: Add ‘default’ and ‘version’ help text for
|
||||
localization in argparse.
|
||||
* Documentation
|
||||
- gh-115399: Document CVE-2023-52425 of Expat <2.6.0 under “XML
|
||||
vulnerabilities”.
|
||||
- gh-115233: Fix an example for LoggerAdapter in the Logging
|
||||
Cookbook.
|
||||
* Tests
|
||||
- gh-83434: Disable JUnit XML output (--junit-xml=FILE command
|
||||
line option) in regrtest when hunting for reference leaks (-R
|
||||
option). Patch by Victor Stinner.
|
||||
- gh-117187: Fix XML tests for vanilla Expat <2.6.0.
|
||||
- gh-115979: Update test_importlib so that it passes under WASI
|
||||
SDK 21.
|
||||
- gh-116307: Added import helper isolated_modules as CleanImport
|
||||
does not remove modules imported during the context.
|
||||
- gh-115720: Leak tests (-R, --huntrleaks) now show a summary of
|
||||
the number of leaks found in each iteration.
|
||||
- gh-115122: Add --bisect option to regrtest test runner: run
|
||||
failed tests with test.bisect_cmd to identify failing tests.
|
||||
Patch by Victor Stinner.
|
||||
- gh-115596: Fix ProgramPriorityTests in test_os permanently
|
||||
changing the process priority.
|
||||
- gh-115198: Fix test_check_metadata_deprecate in distutils tests
|
||||
with a newer Docutils.
|
||||
* Build
|
||||
- gh-116313: Get WASI builds to work under wasmtime 18 w/ WASI
|
||||
0.2/preview2 primitives.
|
||||
- gh-115167: Avoid vendoring vcruntime140_threads.dll when
|
||||
building with Visual Studio 2022 version 17.8.
|
||||
* Windows
|
||||
- gh-116773: Fix instances of <_overlapped.Overlapped object at
|
||||
0xXXX> still has pending operation at deallocation, the process
|
||||
may crash.
|
||||
- gh-91227: Fix the asyncio ProactorEventLoop implementation so
|
||||
that sending a datagram to an address that is not listening does
|
||||
not prevent receiving any more datagrams.
|
||||
- gh-115554: The installer now has more strict rules about
|
||||
updating the Python Launcher for Windows. In general, most users
|
||||
only have a single launcher installed and will see no
|
||||
difference. When multiple launchers have been installed, the
|
||||
option to install the launcher is disabled until all but one
|
||||
have been removed. Downgrading the launcher (which was never
|
||||
allowed) is now more obviously blocked.
|
||||
- gh-115543: Python Launcher for Windows can now detect Python
|
||||
3.13 when installed from the Microsoft Store, and will install
|
||||
Python 3.12 by default when PYLAUNCHER_ALLOW_INSTALL is set.
|
||||
- gh-115009: Update Windows installer to use SQLite 3.45.1.
|
||||
* IDLE
|
||||
- gh-88516: On macOS show a proxy icon in the title bar of editor
|
||||
windows to match platform behaviour.
|
||||
* Tools/Demos
|
||||
- gh-113516: Don’t set LDSHARED when building for WASI.
|
||||
* C API
|
||||
- gh-117021: Fix integer overflow in PyLong_AsPid() on non-Windows
|
||||
64-bit platforms.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Mar 24 07:51:45 UTC 2024 - Matej Cepl <mcepl@cepl.eu>
|
||||
|
||||
|
@ -94,7 +94,7 @@
|
||||
%define dynlib() %{sitedir}/lib-dynload/%{1}.cpython-%{abi_tag}-%{archname}-%{_os}%{?_gnu}%{?armsuffix}.so
|
||||
%bcond_without profileopt
|
||||
Name: %{python_pkg_name}%{psuffix}
|
||||
Version: 3.11.8
|
||||
Version: 3.11.9
|
||||
Release: 0
|
||||
Summary: Python 3 Interpreter
|
||||
License: Python-2.0
|
||||
@ -165,15 +165,9 @@ Patch13: skip_if_buildbot-extend.patch
|
||||
# Detect email address parsing errors and return empty tuple to
|
||||
# indicate the parsing error (old API)
|
||||
Patch14: CVE-2023-27043-email-parsing-errors.patch
|
||||
# PATCH-FIX-UPSTREAM libexpat260.patch gh#python/cpython#115289
|
||||
# Fix tests for XMLPullParser with Expat 2.6.0
|
||||
Patch15: libexpat260.patch
|
||||
# PATCH-FIX-UPSTREAM CVE-2023-6597-TempDir-cleaning-symlink.patch bsc#1219666 mcepl@suse.com
|
||||
# tempfile.TemporaryDirectory: fix symlink bug in cleanup (from gh#python/cpython!99930)
|
||||
Patch16: CVE-2023-6597-TempDir-cleaning-symlink.patch
|
||||
# PATCH-FIX-UPSTREAM bsc1221260-test_asyncio-ResourceWarning.patch bsc#1221260 mcepl@suse.com
|
||||
# prevent ResourceWarning in test_asyncio tests
|
||||
Patch17: bsc1221260-test_asyncio-ResourceWarning.patch
|
||||
Patch15: bsc1221260-test_asyncio-ResourceWarning.patch
|
||||
BuildRequires: autoconf-archive
|
||||
BuildRequires: automake
|
||||
BuildRequires: fdupes
|
||||
@ -434,8 +428,6 @@ other applications.
|
||||
%patch -p1 -P 13
|
||||
%patch -p1 -P 14
|
||||
%patch -p1 -P 15
|
||||
%patch -p1 -P 16
|
||||
%patch -p1 -P 17
|
||||
|
||||
# drop Autoconf version requirement
|
||||
sed -i 's/^AC_PREREQ/dnl AC_PREREQ/' configure.ac
|
||||
|
Loading…
Reference in New Issue
Block a user