Accepting request 1269059 from devel:languages:python:Factory
- Update to 3.12.10: - gh-131852: msgfmt no longer adds the POT-Creation-Date to generated .mo files for consistency with GNU msgfmt. - gh-85012: Correctly reset msgctxt when compiling messages in msgfmt. - gh-131050: test_ssl.test_dh_params is skipped if the underlying TLS library does not support finite-field ephemeral Diffie-Hellman. - gh-119727: Add --single-process command line option to Python test runner (regrtest). Patch by Victor Stinner. - gh-131809: Update bundled libexpat to 2.7.1 - gh-131261: Upgrade to libexpat 2.7.0 - 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. - 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. - gh-116608: undeprecate functional API for importlib.resources - gh-132075: Fix possible use of socket address structures with uninitialized members. Now all structure members are initialized with zeroes by default. - gh-132002: Fix crash when deallocating contextvars.ContextVar OBS-URL: https://build.opensuse.org/request/show/1269059 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python312?expand=0&rev=30
This commit is contained in:
@@ -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
|
||||
@@ -794,6 +794,10 @@ class ReparseDeferralTest(unittest.TestC
|
||||
Index: Python-3.12.10/Lib/test/test_pyexpat.py
|
||||
===================================================================
|
||||
--- Python-3.12.10.orig/Lib/test/test_pyexpat.py 2025-04-11 21:04:45.031445243 +0200
|
||||
+++ Python-3.12.10/Lib/test/test_pyexpat.py 2025-04-11 21:16:30.736034401 +0200
|
||||
@@ -794,6 +794,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
|
||||
@@ -1240,6 +1240,9 @@ class ExpatReaderTest(XmlTestBase):
|
||||
Index: Python-3.12.10/Lib/test/test_sax.py
|
||||
===================================================================
|
||||
--- Python-3.12.10.orig/Lib/test/test_sax.py 2025-04-11 21:04:45.061811205 +0200
|
||||
+++ Python-3.12.10/Lib/test/test_sax.py 2025-04-11 21:16:30.736607523 +0200
|
||||
@@ -1240,6 +1240,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.12.10/Lib/test/test_xml_etree.py
|
||||
===================================================================
|
||||
--- Python-3.12.10.orig/Lib/test/test_xml_etree.py 2025-04-11 21:04:45.473815938 +0200
|
||||
+++ Python-3.12.10/Lib/test/test_xml_etree.py 2025-04-11 21:16:30.737465180 +0200
|
||||
@@ -138,6 +138,11 @@
|
||||
return mock.patch.object(cls, "__eq__", autospec=True, wraps=eq)
|
||||
|
||||
|
||||
+IS_SLE_15_6 = os.environ.get("SLE_VERSION", "") == "0150600"
|
||||
+fails_with_expat_2_6_0 = (unittest.expectedFailure
|
||||
@@ -43,7 +49,7 @@
|
||||
def checkwarnings(*filters, quiet=False):
|
||||
def decorator(test):
|
||||
def newtest(*args, **kwargs):
|
||||
@@ -1424,9 +1429,11 @@ class XMLPullParserTest(unittest.TestCas
|
||||
@@ -1441,9 +1446,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)
|
||||
|
||||
@@ -1651,6 +1658,9 @@ class XMLPullParserTest(unittest.TestCas
|
||||
@@ -1668,6 +1675,9 @@
|
||||
|
||||
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 +++++++++++++--
|
||||
2 files changed, 65 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/Lib/sysconfig.py
|
||||
+++ b/Lib/sysconfig.py
|
||||
@@ -104,6 +104,11 @@ if os.name == 'nt':
|
||||
Index: Python-3.12.10/Lib/sysconfig.py
|
||||
===================================================================
|
||||
--- Python-3.12.10.orig/Lib/sysconfig.py 2025-04-11 21:04:43.494305425 +0200
|
||||
+++ Python-3.12.10/Lib/sysconfig.py 2025-04-11 21:04:51.517931810 +0200
|
||||
@@ -104,6 +104,11 @@
|
||||
else:
|
||||
_INSTALL_SCHEMES['venv'] = _INSTALL_SCHEMES['posix_venv']
|
||||
|
||||
@@ -42,7 +44,7 @@ Co-authored-by: Lumír Balhar <frenzy.madness@gmail.com>
|
||||
|
||||
# NOTE: site.py has copy of this function.
|
||||
# Sync it when modify this function.
|
||||
@@ -163,13 +168,28 @@ if _HAS_USER_BASE:
|
||||
@@ -163,13 +168,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()
|
||||
@@ -261,11 +281,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
|
||||
@@ -119,8 +119,19 @@ class TestSysConfig(unittest.TestCase):
|
||||
Index: Python-3.12.10/Lib/test/test_sysconfig.py
|
||||
===================================================================
|
||||
--- Python-3.12.10.orig/Lib/test/test_sysconfig.py 2025-04-11 21:04:45.175417431 +0200
|
||||
+++ Python-3.12.10/Lib/test/test_sysconfig.py 2025-04-11 21:04:51.518393464 +0200
|
||||
@@ -119,8 +119,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),
|
||||
)
|
||||
|
||||
@@ -353,7 +364,7 @@ class TestSysConfig(unittest.TestCase):
|
||||
@@ -353,7 +364,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)))
|
||||
@@ -365,6 +376,8 @@ class TestSysConfig(unittest.TestCase):
|
||||
@@ -365,6 +376,8 @@
|
||||
cmd = "-c", "import sysconfig; print(sysconfig.get_platform())"
|
||||
self.assertEqual(py.call_real(*cmd), py.call_link(*cmd))
|
||||
|
||||
|
3
Python-3.12.10.tar.xz
Normal file
3
Python-3.12.10.tar.xz
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:07ab697474595e06f06647417d3c7fa97ded07afc1a7e4454c5639919b46eaea
|
||||
size 20520960
|
18
Python-3.12.10.tar.xz.asc
Normal file
18
Python-3.12.10.tar.xz.asc
Normal file
@@ -0,0 +1,18 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQKTBAABCgB9FiEEcWlgX2LHUTVtBUomqCHmgOX6YwUFAmf1EjJfFIAAAAAALgAo
|
||||
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDcx
|
||||
Njk2MDVGNjJDNzUxMzU2RDA1NEEyNkE4MjFFNjgwRTVGQTYzMDUACgkQqCHmgOX6
|
||||
YwXAwBAAncWm4sMrSvGW4bgyp7bHE0CeaA9ErIq55CmHfigrlxPKQUYVlzj38N7H
|
||||
MVlpmqZSQ8wqDFy3gN0QeCXBGapxgO2dEcrgy5HxvtktXge25j1f7LvVraSFB9/F
|
||||
DrOCZr54gVrE/r0242f1JmJQ1BDeMDSUbEYE6fd0xqWYCZ2xpzvYmQG/+6jD5FFC
|
||||
UE6PYxJlq+rfSawj974//BDhrY4hZ3g0xxyiyhfXBBYMhZO3OzCckrAD5zZOQfNE
|
||||
y/JK94nVWXLU/Lx3R+L7TvJgJ3ej4ggq5LRwrn09GU5jExwyITh4yUO7i56vbmvx
|
||||
EtOobQC0RVz/xrsciJ4Gn3zByaO0XPjrGaCOU53nCsNlfJcBQhj2UQpum8CL9S9C
|
||||
BJPCV4jL+Mo8EL91cJTyX4LqFoAXayMwPS0HKVOvYn33+pmVNe+duY/UjUpG50kw
|
||||
jdsHbKAthh8QbSIO0VPk4eH3pVEQ3O9aG+3r/puGjPRWG8CMyLbQUVmlj4Sh3/Kh
|
||||
vh7ydOjzJeuIUhAmFOLLqYG4mah71q1yBXx9jhyxzQSwvyoQaQwgpA+Yn+yB1bXy
|
||||
ttxp2r4fS0ZvGYB44C1WrAxeKRI+J1z19i1IYMc2bV6SfSBoU9AaJqh2o4dMHHUS
|
||||
F3Ko4UTyjU4bTfI18dCs2OgUEED6BAe5cs3ZyqDm3zL4fGIgNXs=
|
||||
=k0VQ
|
||||
-----END PGP SIGNATURE-----
|
1
Python-3.12.10.tar.xz.sigstore
Normal file
1
Python-3.12.10.tar.xz.sigstore
Normal file
File diff suppressed because one or more lines are too long
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7220835d9f90b37c006e9842a8dff4580aaca4318674f947302b8d28f3f81112
|
||||
size 20502440
|
@@ -1,18 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQKTBAABCgB9FiEEcWlgX2LHUTVtBUomqCHmgOX6YwUFAmeiX7JfFIAAAAAALgAo
|
||||
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDcx
|
||||
Njk2MDVGNjJDNzUxMzU2RDA1NEEyNkE4MjFFNjgwRTVGQTYzMDUACgkQqCHmgOX6
|
||||
YwXTqw//VlGJA5CRDfljMwN9BmG2hdXB1B7Lj0PssuAo4A/lH99gb4DRVDS9LNjr
|
||||
99WdH/fQQovx6rTbtyJnN8Vh7SSduBi/vOc5n5VOXZB0buqR0l+0wu4m43Slu6xP
|
||||
fXO349Hr6585lemU8x54TrP756rSVUhy3T+krUuNDL9W1Wrp2yDCpt4tUoEhNXGw
|
||||
DoYS8MrK/ygLNV/7p2DeMWOHNdbjKNH6rfzl60IAwAp7oANcyoj6Pho960bbeUDo
|
||||
tb47Pw0WWZv3EuITP6bPa8+Z6dj096cFL3AQJ3ap16OduwiaOsGhqTfe4+kbp6ut
|
||||
Gp/1HeIHzPbEV0E5K78RWHuzBYgU1oPGiMjlp7WkA7bP2OSTF7nM4EBkiiihk2qx
|
||||
3d5VF9wpVRJ4AuR/aWcWcMnvD2ziSWfzZM3Z3VLnTaWYpuRkQp8TTiFr1vHqxMYm
|
||||
p/8AozzBJMfOS6u/Q0WNAdk6x3VB0DXnTAETXQVIrex4DXqX/3WSMWK5/x/OyCh9
|
||||
ytdreIQYbv1KvlNQJkgpPb7jlUSXp8t9fHCXt4hszhJgtjwIj/+CuSeAgX0bhopV
|
||||
XsqOBseDNhATg38mhwBVaeFKGRpxsKdpxcdqSEGKuhXtEI/hJmkpZGw49gy3xWxB
|
||||
KlgRgKjCPw+BGAIVV9qvdtJzam8a09SKVcslqgF619q0byQoBmo=
|
||||
=1TbP
|
||||
-----END PGP SIGNATURE-----
|
File diff suppressed because one or more lines are too long
@@ -5,30 +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
|
||||
|
||||
Index: Python-3.12.4/Doc/library/ensurepip.rst
|
||||
Index: Python-3.12.10/Doc/library/ensurepip.rst
|
||||
===================================================================
|
||||
--- Python-3.12.4.orig/Doc/library/ensurepip.rst
|
||||
+++ Python-3.12.4/Doc/library/ensurepip.rst
|
||||
@@ -59,8 +59,9 @@ is at least as recent as the one availab
|
||||
--- Python-3.12.10.orig/Doc/library/ensurepip.rst 2025-04-08 13:35:47.000000000 +0200
|
||||
+++ Python-3.12.10/Doc/library/ensurepip.rst 2025-04-11 21:16:06.140273604 +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.
|
||||
|
||||
@@ -37,7 +39,7 @@ Index: Python-3.12.4/Doc/library/ensurepip.rst
|
||||
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.
|
||||
|
||||
@@ -46,7 +48,7 @@ Index: Python-3.12.4/Doc/library/ensurepip.rst
|
||||
*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.
|
||||
|
||||
@@ -55,11 +57,11 @@ Index: Python-3.12.4/Doc/library/ensurepip.rst
|
||||
.. audit-event:: ensurepip.bootstrap root ensurepip.bootstrap
|
||||
|
||||
.. note::
|
||||
Index: Python-3.12.4/Lib/ensurepip/__init__.py
|
||||
Index: Python-3.12.10/Lib/ensurepip/__init__.py
|
||||
===================================================================
|
||||
--- Python-3.12.4.orig/Lib/ensurepip/__init__.py
|
||||
+++ Python-3.12.4/Lib/ensurepip/__init__.py
|
||||
@@ -120,27 +120,27 @@ def _disable_pip_configuration_settings(
|
||||
--- Python-3.12.10.orig/Lib/ensurepip/__init__.py 2025-04-11 21:04:42.789443156 +0200
|
||||
+++ Python-3.12.10/Lib/ensurepip/__init__.py 2025-04-11 21:13:01.303399067 +0200
|
||||
@@ -120,27 +120,27 @@
|
||||
os.environ['PIP_CONFIG_FILE'] = os.devnull
|
||||
|
||||
|
||||
@@ -92,7 +94,7 @@ Index: Python-3.12.4/Lib/ensurepip/__init__.py
|
||||
|
||||
Note that calling this function will alter both sys.path and os.environ.
|
||||
"""
|
||||
@@ -190,6 +190,8 @@ def _bootstrap(*, root=None, upgrade=Fal
|
||||
@@ -190,6 +190,8 @@
|
||||
args = ["install", "--no-cache-dir", "--no-index", "--find-links", tmpdir]
|
||||
if root:
|
||||
args += ["--root", root]
|
||||
@@ -101,7 +103,7 @@ Index: Python-3.12.4/Lib/ensurepip/__init__.py
|
||||
if upgrade:
|
||||
args += ["--upgrade"]
|
||||
if user:
|
||||
@@ -265,6 +267,11 @@ def _main(argv=None):
|
||||
@@ -265,6 +267,11 @@
|
||||
help="Install everything relative to this alternate root directory.",
|
||||
)
|
||||
parser.add_argument(
|
||||
@@ -113,7 +115,7 @@ Index: Python-3.12.4/Lib/ensurepip/__init__.py
|
||||
"--altinstall",
|
||||
action="store_true",
|
||||
default=False,
|
||||
@@ -283,6 +290,7 @@ def _main(argv=None):
|
||||
@@ -283,6 +290,7 @@
|
||||
|
||||
return _bootstrap(
|
||||
root=args.root,
|
||||
@@ -121,11 +123,11 @@ Index: Python-3.12.4/Lib/ensurepip/__init__.py
|
||||
upgrade=args.upgrade,
|
||||
user=args.user,
|
||||
verbosity=args.verbosity,
|
||||
Index: Python-3.12.4/Lib/test/test_ensurepip.py
|
||||
Index: Python-3.12.10/Lib/test/test_ensurepip.py
|
||||
===================================================================
|
||||
--- Python-3.12.4.orig/Lib/test/test_ensurepip.py
|
||||
+++ Python-3.12.4/Lib/test/test_ensurepip.py
|
||||
@@ -105,6 +105,17 @@ class TestBootstrap(EnsurepipMixin, unit
|
||||
--- Python-3.12.10.orig/Lib/test/test_ensurepip.py 2025-04-11 21:04:44.274413027 +0200
|
||||
+++ Python-3.12.10/Lib/test/test_ensurepip.py 2025-04-11 21:13:01.303691075 +0200
|
||||
@@ -105,6 +105,17 @@
|
||||
unittest.mock.ANY,
|
||||
)
|
||||
|
||||
@@ -143,11 +145,11 @@ Index: Python-3.12.4/Lib/test/test_ensurepip.py
|
||||
def test_bootstrapping_with_user(self):
|
||||
ensurepip.bootstrap(user=True)
|
||||
|
||||
Index: Python-3.12.4/Makefile.pre.in
|
||||
Index: Python-3.12.10/Makefile.pre.in
|
||||
===================================================================
|
||||
--- Python-3.12.4.orig/Makefile.pre.in
|
||||
+++ Python-3.12.4/Makefile.pre.in
|
||||
@@ -1914,7 +1914,7 @@ install: @FRAMEWORKINSTALLFIRST@ commoni
|
||||
--- Python-3.12.10.orig/Makefile.pre.in 2025-04-11 21:04:58.388346212 +0200
|
||||
+++ Python-3.12.10/Makefile.pre.in 2025-04-11 21:13:01.304095180 +0200
|
||||
@@ -1914,7 +1914,7 @@
|
||||
install|*) ensurepip="" ;; \
|
||||
esac; \
|
||||
$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
|
||||
@@ -156,7 +158,7 @@ Index: Python-3.12.4/Makefile.pre.in
|
||||
fi
|
||||
|
||||
.PHONY: altinstall
|
||||
@@ -1925,7 +1925,7 @@ altinstall: commoninstall
|
||||
@@ -1925,7 +1925,7 @@
|
||||
install|*) ensurepip="--altinstall" ;; \
|
||||
esac; \
|
||||
$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
|
||||
@@ -165,9 +167,9 @@ Index: Python-3.12.4/Makefile.pre.in
|
||||
fi
|
||||
|
||||
.PHONY: commoninstall
|
||||
Index: Python-3.12.4/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst
|
||||
Index: Python-3.12.10/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ Python-3.12.4/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.12.10/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst 2025-04-11 21:13:01.304672632 +0200
|
||||
@@ -0,0 +1 @@
|
||||
+A directory prefix can now be specified when using :mod:`ensurepip`.
|
||||
|
@@ -11,9 +11,11 @@
|
||||
Doc/tools/extensions/patchlevel.py | 9 ++---
|
||||
10 files changed, 100 insertions(+), 84 deletions(-)
|
||||
|
||||
--- a/Doc/Makefile
|
||||
+++ b/Doc/Makefile
|
||||
@@ -14,15 +14,15 @@ PAPER =
|
||||
Index: Python-3.12.10/Doc/Makefile
|
||||
===================================================================
|
||||
--- Python-3.12.10.orig/Doc/Makefile 2025-04-11 21:04:46.171424996 +0200
|
||||
+++ Python-3.12.10/Doc/Makefile 2025-04-11 21:18:23.184451081 +0200
|
||||
@@ -14,15 +14,15 @@
|
||||
SOURCES =
|
||||
DISTVERSION = $(shell $(PYTHON) tools/extensions/patchlevel.py)
|
||||
REQUIREMENTS = requirements.txt
|
||||
@@ -33,27 +35,29 @@
|
||||
$(PAPEROPT_$(PAPER)) \
|
||||
$(SPHINXOPTS) $(SPHINXERRORHANDLING) \
|
||||
. build/$(BUILDER) $(SOURCES)
|
||||
--- a/Doc/conf.py
|
||||
+++ b/Doc/conf.py
|
||||
@@ -10,6 +10,8 @@ import importlib
|
||||
import os
|
||||
import sys
|
||||
Index: Python-3.12.10/Doc/conf.py
|
||||
===================================================================
|
||||
--- Python-3.12.10.orig/Doc/conf.py 2025-04-11 21:04:42.254653936 +0200
|
||||
+++ Python-3.12.10/Doc/conf.py 2025-04-11 21:18:44.605665782 +0200
|
||||
@@ -11,6 +11,8 @@
|
||||
from importlib import import_module
|
||||
from importlib.util import find_spec
|
||||
|
||||
+from sphinx import version_info
|
||||
+
|
||||
# Make our custom extensions available to Sphinx
|
||||
sys.path.append(os.path.abspath('tools/extensions'))
|
||||
sys.path.append(os.path.abspath('includes'))
|
||||
@@ -82,7 +84,7 @@ highlight_language = 'python3'
|
||||
@@ -87,7 +89,7 @@
|
||||
|
||||
# Minimum version of sphinx required
|
||||
# Keep this version in sync with ``Doc/requirements.txt``.
|
||||
-needs_sphinx = '8.1.3'
|
||||
-needs_sphinx = '8.2.0'
|
||||
+needs_sphinx = '4.2.0'
|
||||
|
||||
# Create table of contents entries for domain objects (e.g. functions, classes,
|
||||
# attributes, etc.). Default is True.
|
||||
@@ -337,7 +339,7 @@ html_short_title = f'{release} Documenta
|
||||
@@ -342,7 +344,7 @@
|
||||
# (See .readthedocs.yml and https://docs.readthedocs.io/en/stable/reference/environment-variables.html)
|
||||
is_deployment_preview = os.getenv("READTHEDOCS_VERSION_TYPE") == "external"
|
||||
repository_url = os.getenv("READTHEDOCS_GIT_CLONE_URL", "")
|
||||
@@ -62,7 +66,7 @@
|
||||
html_context = {
|
||||
"is_deployment_preview": is_deployment_preview,
|
||||
"repository_url": repository_url or None,
|
||||
@@ -583,6 +585,16 @@ extlinks = {
|
||||
@@ -588,6 +590,16 @@
|
||||
}
|
||||
extlinks_detect_hardcoded_links = True
|
||||
|
||||
@@ -79,9 +83,11 @@
|
||||
# Options for c_annotations extension
|
||||
# -----------------------------------
|
||||
|
||||
--- a/Doc/tools/check-warnings.py
|
||||
+++ b/Doc/tools/check-warnings.py
|
||||
@@ -228,7 +228,8 @@ def fail_if_regression(
|
||||
Index: Python-3.12.10/Doc/tools/check-warnings.py
|
||||
===================================================================
|
||||
--- Python-3.12.10.orig/Doc/tools/check-warnings.py 2025-04-08 13:35:47.000000000 +0200
|
||||
+++ Python-3.12.10/Doc/tools/check-warnings.py 2025-04-11 21:18:23.185204047 +0200
|
||||
@@ -228,7 +228,8 @@
|
||||
print(filename)
|
||||
for warning in warnings:
|
||||
if filename in warning:
|
||||
@@ -91,7 +97,7 @@
|
||||
print(" {line}: {msg}".format_map(match))
|
||||
return -1
|
||||
return 0
|
||||
@@ -316,7 +317,7 @@ def main(argv: list[str] | None = None)
|
||||
@@ -316,7 +317,7 @@
|
||||
|
||||
cwd = str(Path.cwd()) + os.path.sep
|
||||
files_with_nits = {
|
||||
@@ -100,8 +106,10 @@
|
||||
for warning in warnings
|
||||
if "Doc/" in warning
|
||||
}
|
||||
--- a/Doc/tools/extensions/audit_events.py
|
||||
+++ b/Doc/tools/extensions/audit_events.py
|
||||
Index: Python-3.12.10/Doc/tools/extensions/audit_events.py
|
||||
===================================================================
|
||||
--- Python-3.12.10.orig/Doc/tools/extensions/audit_events.py 2025-04-08 13:35:47.000000000 +0200
|
||||
+++ Python-3.12.10/Doc/tools/extensions/audit_events.py 2025-04-11 21:18:23.185493402 +0200
|
||||
@@ -1,9 +1,6 @@
|
||||
"""Support for documenting audit events."""
|
||||
|
||||
@@ -112,7 +120,7 @@
|
||||
|
||||
from docutils import nodes
|
||||
from sphinx.errors import NoUri
|
||||
@@ -12,12 +9,11 @@ from sphinx.transforms.post_transforms i
|
||||
@@ -12,12 +9,11 @@
|
||||
from sphinx.util import logging
|
||||
from sphinx.util.docutils import SphinxDirective
|
||||
|
||||
@@ -129,7 +137,7 @@
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -32,16 +28,16 @@ _SYNONYMS = [
|
||||
@@ -32,16 +28,16 @@
|
||||
|
||||
class AuditEvents:
|
||||
def __init__(self) -> None:
|
||||
@@ -150,7 +158,7 @@
|
||||
) -> None:
|
||||
if name in self.events:
|
||||
self._check_args_match(name, args)
|
||||
@@ -49,7 +45,7 @@ class AuditEvents:
|
||||
@@ -49,7 +45,7 @@
|
||||
self.events[name] = args
|
||||
self.sources.setdefault(name, []).append(source)
|
||||
|
||||
@@ -159,7 +167,7 @@
|
||||
current_args = self.events[name]
|
||||
msg = (
|
||||
f"Mismatched arguments for audit-event {name}: "
|
||||
@@ -60,7 +56,7 @@ class AuditEvents:
|
||||
@@ -60,7 +56,7 @@
|
||||
if len(current_args) != len(args):
|
||||
logger.warning(msg)
|
||||
return
|
||||
@@ -168,7 +176,7 @@
|
||||
if a1 == a2:
|
||||
continue
|
||||
if any(a1 in s and a2 in s for s in _SYNONYMS):
|
||||
@@ -73,7 +69,7 @@ class AuditEvents:
|
||||
@@ -73,7 +69,7 @@
|
||||
name_clean = re.sub(r"\W", "_", name)
|
||||
return f"audit_event_{name_clean}_{source_count}"
|
||||
|
||||
@@ -177,7 +185,7 @@
|
||||
for name in sorted(self.events.keys()):
|
||||
yield name, self.events[name], self.sources[name]
|
||||
|
||||
@@ -97,7 +93,7 @@ def audit_events_purge(
|
||||
@@ -97,7 +93,7 @@
|
||||
def audit_events_merge(
|
||||
app: Sphinx,
|
||||
env: BuildEnvironment,
|
||||
@@ -186,7 +194,7 @@
|
||||
other: BuildEnvironment,
|
||||
) -> None:
|
||||
"""In Sphinx parallel builds, this merges audit_events from subprocesses."""
|
||||
@@ -126,14 +122,16 @@ class AuditEvent(SphinxDirective):
|
||||
@@ -126,14 +122,16 @@
|
||||
),
|
||||
]
|
||||
|
||||
@@ -209,7 +217,7 @@
|
||||
else:
|
||||
args = []
|
||||
ids = []
|
||||
@@ -169,7 +167,7 @@ class audit_event_list(nodes.General, no
|
||||
@@ -169,7 +167,7 @@
|
||||
|
||||
|
||||
class AuditEventListDirective(SphinxDirective):
|
||||
@@ -218,7 +226,7 @@
|
||||
return [audit_event_list()]
|
||||
|
||||
|
||||
@@ -181,7 +179,11 @@ class AuditEventListTransform(SphinxPost
|
||||
@@ -181,7 +179,11 @@
|
||||
return
|
||||
|
||||
table = self._make_table(self.app.builder, self.env.docname)
|
||||
@@ -231,7 +239,7 @@
|
||||
node.replace_self(table)
|
||||
|
||||
def _make_table(self, builder: Builder, docname: str) -> nodes.table:
|
||||
@@ -217,8 +219,8 @@ class AuditEventListTransform(SphinxPost
|
||||
@@ -217,8 +219,8 @@
|
||||
builder: Builder,
|
||||
docname: str,
|
||||
name: str,
|
||||
@@ -242,8 +250,10 @@
|
||||
) -> nodes.row:
|
||||
row = nodes.row()
|
||||
name_node = nodes.paragraph("", nodes.Text(name))
|
||||
--- a/Doc/tools/extensions/availability.py
|
||||
+++ b/Doc/tools/extensions/availability.py
|
||||
Index: Python-3.12.10/Doc/tools/extensions/availability.py
|
||||
===================================================================
|
||||
--- Python-3.12.10.orig/Doc/tools/extensions/availability.py 2025-04-08 13:35:47.000000000 +0200
|
||||
+++ Python-3.12.10/Doc/tools/extensions/availability.py 2025-04-11 21:18:23.185756636 +0200
|
||||
@@ -1,8 +1,6 @@
|
||||
"""Support for documenting platform availability"""
|
||||
|
||||
@@ -254,7 +264,7 @@
|
||||
|
||||
from docutils import nodes
|
||||
from sphinx import addnodes
|
||||
@@ -53,7 +51,7 @@ class Availability(SphinxDirective):
|
||||
@@ -53,7 +51,7 @@
|
||||
optional_arguments = 0
|
||||
final_argument_whitespace = True
|
||||
|
||||
@@ -263,7 +273,7 @@
|
||||
title = sphinx_gettext("Availability")
|
||||
refnode = addnodes.pending_xref(
|
||||
title,
|
||||
@@ -77,7 +75,7 @@ class Availability(SphinxDirective):
|
||||
@@ -77,7 +75,7 @@
|
||||
|
||||
return [cnode]
|
||||
|
||||
@@ -272,7 +282,7 @@
|
||||
"""Parse platform information from arguments
|
||||
|
||||
Arguments is a comma-separated string of platforms. A platform may
|
||||
@@ -96,12 +94,13 @@ class Availability(SphinxDirective):
|
||||
@@ -96,12 +94,13 @@
|
||||
platform, _, version = arg.partition(" >= ")
|
||||
if platform.startswith("not "):
|
||||
version = False
|
||||
@@ -288,7 +298,7 @@
|
||||
logger.warning(
|
||||
"Unknown platform%s or syntax '%s' in '.. availability:: %s', "
|
||||
"see %s:KNOWN_PLATFORMS for a set of known platforms.",
|
||||
@@ -114,7 +113,7 @@ class Availability(SphinxDirective):
|
||||
@@ -114,7 +113,7 @@
|
||||
return platforms
|
||||
|
||||
|
||||
@@ -297,9 +307,11 @@
|
||||
app.add_directive("availability", Availability)
|
||||
|
||||
return {
|
||||
--- a/Doc/tools/extensions/c_annotations.py
|
||||
+++ b/Doc/tools/extensions/c_annotations.py
|
||||
@@ -9,22 +9,18 @@ Configuration:
|
||||
Index: Python-3.12.10/Doc/tools/extensions/c_annotations.py
|
||||
===================================================================
|
||||
--- Python-3.12.10.orig/Doc/tools/extensions/c_annotations.py 2025-04-11 21:16:39.007011463 +0200
|
||||
+++ Python-3.12.10/Doc/tools/extensions/c_annotations.py 2025-04-11 21:18:23.185953242 +0200
|
||||
@@ -9,22 +9,18 @@
|
||||
* Set ``stable_abi_file`` to the path to stable ABI list.
|
||||
"""
|
||||
|
||||
@@ -325,7 +337,7 @@
|
||||
|
||||
ROLE_TO_OBJECT_TYPE = {
|
||||
"func": "function",
|
||||
@@ -35,20 +31,20 @@ ROLE_TO_OBJECT_TYPE = {
|
||||
@@ -35,20 +31,20 @@
|
||||
}
|
||||
|
||||
|
||||
@@ -350,7 +362,7 @@
|
||||
class StableABIEntry:
|
||||
# Role of the object.
|
||||
# Source: Each [item_kind] in stable_abi.toml is mapped to a C Domain role.
|
||||
@@ -67,7 +63,7 @@ class StableABIEntry:
|
||||
@@ -67,7 +63,7 @@
|
||||
struct_abi_kind: str
|
||||
|
||||
|
||||
@@ -359,7 +371,7 @@
|
||||
refcount_data = {}
|
||||
refcounts = refcount_filename.read_text(encoding="utf8")
|
||||
for line in refcounts.splitlines():
|
||||
@@ -103,7 +99,7 @@ def read_refcount_data(refcount_filename
|
||||
@@ -103,7 +99,7 @@
|
||||
return refcount_data
|
||||
|
||||
|
||||
@@ -368,7 +380,7 @@
|
||||
stable_abi_data = {}
|
||||
with open(stable_abi_file, encoding="utf8") as fp:
|
||||
for record in csv.DictReader(fp):
|
||||
@@ -127,11 +123,14 @@ def add_annotations(app: Sphinx, doctree
|
||||
@@ -127,11 +123,14 @@
|
||||
continue
|
||||
if not par[0].get("ids", None):
|
||||
continue
|
||||
@@ -385,7 +397,7 @@
|
||||
if ROLE_TO_OBJECT_TYPE[record.role] != objtype:
|
||||
msg = (
|
||||
f"Object type mismatch in limited API annotation for {name}: "
|
||||
@@ -238,7 +237,7 @@ def _unstable_api_annotation() -> nodes.
|
||||
@@ -238,7 +237,7 @@
|
||||
)
|
||||
|
||||
|
||||
@@ -394,7 +406,7 @@
|
||||
classes = ["refcount"]
|
||||
if result_refs is None:
|
||||
rc = sphinx_gettext("Return value: Always NULL.")
|
||||
@@ -258,7 +257,7 @@ class LimitedAPIList(SphinxDirective):
|
||||
@@ -258,7 +257,7 @@
|
||||
optional_arguments = 0
|
||||
final_argument_whitespace = True
|
||||
|
||||
@@ -403,7 +415,7 @@
|
||||
state = self.env.domaindata["c_annotations"]
|
||||
content = [
|
||||
f"* :c:{record.role}:`{record.name}`"
|
||||
@@ -281,13 +280,23 @@ def init_annotations(app: Sphinx) -> Non
|
||||
@@ -281,13 +280,23 @@
|
||||
)
|
||||
|
||||
|
||||
@@ -428,8 +440,10 @@
|
||||
return {
|
||||
"version": "1.0",
|
||||
"parallel_read_safe": True,
|
||||
--- a/Doc/tools/extensions/changes.py
|
||||
+++ b/Doc/tools/extensions/changes.py
|
||||
Index: Python-3.12.10/Doc/tools/extensions/changes.py
|
||||
===================================================================
|
||||
--- Python-3.12.10.orig/Doc/tools/extensions/changes.py 2025-04-08 13:35:47.000000000 +0200
|
||||
+++ Python-3.12.10/Doc/tools/extensions/changes.py 2025-04-11 21:18:23.186150755 +0200
|
||||
@@ -1,7 +1,5 @@
|
||||
"""Support for documenting version of changes, additions, deprecations."""
|
||||
|
||||
@@ -438,7 +452,7 @@
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from sphinx.domains.changeset import (
|
||||
@@ -25,7 +23,7 @@ def expand_version_arg(argument: str, re
|
||||
@@ -25,7 +23,7 @@
|
||||
|
||||
|
||||
class PyVersionChange(VersionChange):
|
||||
@@ -447,7 +461,7 @@
|
||||
# Replace the 'next' special token with the current development version
|
||||
self.arguments[0] = expand_version_arg(
|
||||
self.arguments[0], self.config.release
|
||||
@@ -43,7 +41,7 @@ class DeprecatedRemoved(VersionChange):
|
||||
@@ -43,7 +41,7 @@
|
||||
"Deprecated since version %s, removed in version %s"
|
||||
)
|
||||
|
||||
@@ -456,7 +470,7 @@
|
||||
# Replace the first two arguments (deprecated version and removed version)
|
||||
# with a single tuple of both versions.
|
||||
version_deprecated = expand_version_arg(
|
||||
@@ -73,7 +71,7 @@ class DeprecatedRemoved(VersionChange):
|
||||
@@ -73,7 +71,7 @@
|
||||
versionlabel_classes[self.name] = ""
|
||||
|
||||
|
||||
@@ -465,8 +479,10 @@
|
||||
# Override Sphinx's directives with support for 'next'
|
||||
app.add_directive("versionadded", PyVersionChange, override=True)
|
||||
app.add_directive("versionchanged", PyVersionChange, override=True)
|
||||
--- a/Doc/tools/extensions/glossary_search.py
|
||||
+++ b/Doc/tools/extensions/glossary_search.py
|
||||
Index: Python-3.12.10/Doc/tools/extensions/glossary_search.py
|
||||
===================================================================
|
||||
--- Python-3.12.10.orig/Doc/tools/extensions/glossary_search.py 2025-04-11 21:16:39.007340209 +0200
|
||||
+++ Python-3.12.10/Doc/tools/extensions/glossary_search.py 2025-04-11 21:18:23.186307620 +0200
|
||||
@@ -1,18 +1,14 @@
|
||||
"""Feature search results for glossary items prominently."""
|
||||
|
||||
@@ -488,7 +504,7 @@
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -60,7 +56,7 @@ def write_glossary_json(app: Sphinx, _ex
|
||||
@@ -60,7 +56,7 @@
|
||||
dest.write_text(json.dumps(app.env.glossary_terms), encoding='utf-8')
|
||||
|
||||
|
||||
@@ -497,8 +513,10 @@
|
||||
app.connect('doctree-resolved', process_glossary_nodes)
|
||||
app.connect('build-finished', write_glossary_json)
|
||||
|
||||
--- a/Doc/tools/extensions/misc_news.py
|
||||
+++ b/Doc/tools/extensions/misc_news.py
|
||||
Index: Python-3.12.10/Doc/tools/extensions/misc_news.py
|
||||
===================================================================
|
||||
--- Python-3.12.10.orig/Doc/tools/extensions/misc_news.py 2025-04-08 13:35:47.000000000 +0200
|
||||
+++ Python-3.12.10/Doc/tools/extensions/misc_news.py 2025-04-11 21:18:23.186501571 +0200
|
||||
@@ -1,7 +1,5 @@
|
||||
"""Support for including Misc/NEWS."""
|
||||
|
||||
@@ -507,7 +525,7 @@
|
||||
import re
|
||||
from pathlib import Path
|
||||
from typing import TYPE_CHECKING
|
||||
@@ -24,13 +22,13 @@ Python News
|
||||
@@ -24,13 +22,13 @@
|
||||
+++++++++++
|
||||
"""
|
||||
|
||||
@@ -524,7 +542,7 @@
|
||||
r"^what's new in (.*?)\??$", re.ASCII | re.IGNORECASE | re.MULTILINE
|
||||
)
|
||||
|
||||
@@ -42,7 +40,7 @@ class MiscNews(SphinxDirective):
|
||||
@@ -42,7 +40,7 @@
|
||||
final_argument_whitespace = False
|
||||
option_spec = {}
|
||||
|
||||
@@ -533,7 +551,7 @@
|
||||
# Get content of NEWS file
|
||||
source, _ = self.get_source_info()
|
||||
news_file = Path(source).resolve().parent / self.arguments[0]
|
||||
@@ -54,7 +52,7 @@ class MiscNews(SphinxDirective):
|
||||
@@ -54,7 +52,7 @@
|
||||
return [nodes.strong(text, text)]
|
||||
|
||||
# remove first 3 lines as they are the main heading
|
||||
@@ -542,7 +560,7 @@
|
||||
|
||||
news_text = bpo_issue_re.sub(r":issue:`\1`", news_text)
|
||||
# Fallback handling for GitHub issues
|
||||
@@ -65,7 +63,7 @@ class MiscNews(SphinxDirective):
|
||||
@@ -65,7 +63,7 @@
|
||||
return []
|
||||
|
||||
|
||||
@@ -551,8 +569,10 @@
|
||||
app.add_directive("miscnews", MiscNews)
|
||||
|
||||
return {
|
||||
--- a/Doc/tools/extensions/patchlevel.py
|
||||
+++ b/Doc/tools/extensions/patchlevel.py
|
||||
Index: Python-3.12.10/Doc/tools/extensions/patchlevel.py
|
||||
===================================================================
|
||||
--- Python-3.12.10.orig/Doc/tools/extensions/patchlevel.py 2025-04-08 13:35:47.000000000 +0200
|
||||
+++ Python-3.12.10/Doc/tools/extensions/patchlevel.py 2025-04-11 21:18:23.186669122 +0200
|
||||
@@ -3,7 +3,7 @@
|
||||
import re
|
||||
import sys
|
||||
@@ -562,7 +582,7 @@
|
||||
|
||||
CPYTHON_ROOT = Path(
|
||||
__file__, # cpython/Doc/tools/extensions/patchlevel.py
|
||||
@@ -26,7 +26,7 @@ class version_info(NamedTuple): # noqa:
|
||||
@@ -26,7 +26,7 @@
|
||||
major: int #: Major release number
|
||||
minor: int #: Minor release number
|
||||
micro: int #: Patch release number
|
||||
@@ -571,7 +591,7 @@
|
||||
serial: int #: Serial release number
|
||||
|
||||
|
||||
@@ -37,7 +37,8 @@ def get_header_version_info() -> version
|
||||
@@ -37,7 +37,8 @@
|
||||
defines = {}
|
||||
patchlevel_h = PATCHLEVEL_H.read_text(encoding="utf-8")
|
||||
for line in patchlevel_h.splitlines():
|
||||
@@ -581,7 +601,7 @@
|
||||
name, value = m.groups()
|
||||
defines[name] = value
|
||||
|
||||
@@ -50,7 +51,7 @@ def get_header_version_info() -> version
|
||||
@@ -50,7 +51,7 @@
|
||||
)
|
||||
|
||||
|
||||
|
@@ -1,12 +1,13 @@
|
||||
---
|
||||
Doc/tools/extensions/c_annotations.py | 6 +++++-
|
||||
Doc/tools/extensions/glossary_search.py | 12 ++++++++++--
|
||||
Doc/tools/extensions/pyspecific.py | 5 ++++-
|
||||
3 files changed, 19 insertions(+), 4 deletions(-)
|
||||
2 files changed, 15 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/Doc/tools/extensions/c_annotations.py
|
||||
+++ b/Doc/tools/extensions/c_annotations.py
|
||||
@@ -117,7 +117,11 @@ def add_annotations(app: Sphinx, doctree
|
||||
Index: Python-3.12.10/Doc/tools/extensions/c_annotations.py
|
||||
===================================================================
|
||||
--- Python-3.12.10.orig/Doc/tools/extensions/c_annotations.py 2025-04-08 13:35:47.000000000 +0200
|
||||
+++ Python-3.12.10/Doc/tools/extensions/c_annotations.py 2025-04-11 21:16:39.007011463 +0200
|
||||
@@ -117,7 +117,11 @@
|
||||
state = app.env.domaindata["c_annotations"]
|
||||
refcount_data = state["refcount_data"]
|
||||
stable_abi_data = state["stable_abi_data"]
|
||||
@@ -19,9 +20,11 @@
|
||||
par = node.parent
|
||||
if par["domain"] != "c":
|
||||
continue
|
||||
--- a/Doc/tools/extensions/glossary_search.py
|
||||
+++ b/Doc/tools/extensions/glossary_search.py
|
||||
@@ -30,8 +30,16 @@ def process_glossary_nodes(
|
||||
Index: Python-3.12.10/Doc/tools/extensions/glossary_search.py
|
||||
===================================================================
|
||||
--- Python-3.12.10.orig/Doc/tools/extensions/glossary_search.py 2025-04-08 13:35:47.000000000 +0200
|
||||
+++ Python-3.12.10/Doc/tools/extensions/glossary_search.py 2025-04-11 21:16:39.007340209 +0200
|
||||
@@ -30,8 +30,16 @@
|
||||
else:
|
||||
terms = app.env.glossary_terms = {}
|
||||
|
||||
@@ -40,17 +43,3 @@
|
||||
term = glossary_item[0].astext()
|
||||
definition = glossary_item[-1]
|
||||
|
||||
--- a/Doc/tools/extensions/pyspecific.py
|
||||
+++ b/Doc/tools/extensions/pyspecific.py
|
||||
@@ -25,7 +25,10 @@ from sphinx.domains.python import PyFunc
|
||||
from sphinx.locale import _ as sphinx_gettext
|
||||
from sphinx.util.docutils import SphinxDirective
|
||||
from sphinx.writers.text import TextWriter, TextTranslator
|
||||
-from sphinx.util.display import status_iterator
|
||||
+try:
|
||||
+ from sphinx.util.display import status_iterator
|
||||
+except ModuleNotFoundError:
|
||||
+ from sphinx.util import status_iterator
|
||||
|
||||
|
||||
ISSUE_URI = 'https://bugs.python.org/issue?@action=redirect&bpo=%s'
|
||||
|
@@ -3,9 +3,11 @@
|
||||
Misc/NEWS | 2 +-
|
||||
2 files changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
--- a/Doc/using/configure.rst
|
||||
+++ b/Doc/using/configure.rst
|
||||
@@ -640,13 +640,11 @@ macOS Options
|
||||
Index: Python-3.12.10/Doc/using/configure.rst
|
||||
===================================================================
|
||||
--- Python-3.12.10.orig/Doc/using/configure.rst 2025-04-08 13:35:47.000000000 +0200
|
||||
+++ Python-3.12.10/Doc/using/configure.rst 2025-04-11 21:16:27.319169087 +0200
|
||||
@@ -640,13 +640,11 @@
|
||||
|
||||
See ``Mac/README.rst``.
|
||||
|
||||
@@ -19,9 +21,11 @@
|
||||
.. option:: --enable-framework=INSTALLDIR
|
||||
|
||||
Create a Python.framework rather than a traditional Unix install. Optional
|
||||
--- a/Misc/NEWS
|
||||
+++ b/Misc/NEWS
|
||||
@@ -14838,7 +14838,7 @@ C API
|
||||
Index: Python-3.12.10/Misc/NEWS
|
||||
===================================================================
|
||||
--- Python-3.12.10.orig/Misc/NEWS 2025-04-08 13:35:47.000000000 +0200
|
||||
+++ Python-3.12.10/Misc/NEWS 2025-04-11 21:16:27.326169052 +0200
|
||||
@@ -15106,7 +15106,7 @@
|
||||
- bpo-40939: Removed documentation for the removed ``PyParser_*`` C API.
|
||||
|
||||
- bpo-43795: The list in :ref:`limited-api-list` now shows the public name
|
||||
|
@@ -1,3 +1,169 @@
|
||||
-------------------------------------------------------------------
|
||||
Fri Apr 11 19:22:06 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
|
||||
|
||||
- Update to 3.12.10:
|
||||
- gh-131852: msgfmt no longer adds the POT-Creation-Date to
|
||||
generated .mo files for consistency with GNU msgfmt.
|
||||
- gh-85012: Correctly reset msgctxt when compiling messages in
|
||||
msgfmt.
|
||||
- gh-131050: test_ssl.test_dh_params is skipped if the
|
||||
underlying TLS library does not support finite-field
|
||||
ephemeral Diffie-Hellman.
|
||||
- gh-119727: Add --single-process command line option to Python
|
||||
test runner (regrtest). Patch by Victor Stinner.
|
||||
- gh-131809: Update bundled libexpat to 2.7.1
|
||||
- gh-131261: Upgrade to libexpat 2.7.0
|
||||
- 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.
|
||||
- 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.
|
||||
- gh-116608: undeprecate functional API for importlib.resources
|
||||
- gh-132075: Fix possible use of socket address structures
|
||||
with uninitialized members. Now all structure members are
|
||||
initialized with zeroes by default.
|
||||
- gh-132002: Fix crash when deallocating contextvars.ContextVar
|
||||
with weird unahashable string names.
|
||||
- gh-131668: socket: Fix code parsing AF_BLUETOOTH socket
|
||||
addresses.
|
||||
- gh-131492: Fix a resource leak when constructing a
|
||||
gzip.GzipFile with a filename fails, for example when passing
|
||||
an invalid compresslevel.
|
||||
- gh-131325: Fix sendfile fallback implementation to drain data
|
||||
after writing to transport in asyncio.
|
||||
- gh-129843: Fix incorrect argument passing in
|
||||
warnings.warn_explicit().
|
||||
- gh-131204: Use monospace font from System Font Stack for
|
||||
cross-platform support in difflib.HtmlDiff.
|
||||
- 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-130637: Add validation for numeric response data in
|
||||
poplib.POP3.stat() method
|
||||
- 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(), and uuid5() constructor functions.
|
||||
- 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-130250: Fix regression in traceback.print_last().
|
||||
- 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-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-129583: Update bundled pip to 25.0.1
|
||||
- gh-97850: Update the deprecation warning of
|
||||
importlib.abc.Loader.load_module().
|
||||
- gh-129603: Fix bugs where sqlite3.Row objects could segfault
|
||||
if their inherited description was set to None. Patch by
|
||||
Erlend Aasland.
|
||||
- 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-128772: Fix pydoc for methods with the __module__
|
||||
attribute equal to None.
|
||||
- gh-92897: Scheduled the deprecation of the check_home
|
||||
argument of sysconfig.is_python_build() to Python 3.15.
|
||||
- gh-128703: Fix mimetypes.guess_type() to use default mapping
|
||||
for empty Content-Type in registry.
|
||||
- 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-127712: Fix handling of the secure argument of
|
||||
logging.handlers.SMTPHandler.
|
||||
- gh-126033: xml.etree.ElementTree: Fix a crash in
|
||||
Element.remove when the element is concurrently
|
||||
mutated. Patch by Bénédikt Tran.
|
||||
- gh-125553: Fix round-trip invariance for backslash
|
||||
continuations in tokenize.untokenize().
|
||||
- gh-101137: Mime type text/x-rst is now supported by
|
||||
mimetypes.
|
||||
- gh-113238: Add Anchor to importlib.resources (in order for
|
||||
the code to comply with the documentation)
|
||||
- gh-89039: When replace() method is called on a subclass
|
||||
of datetime, date or time, properly call derived
|
||||
constructor. Previously, only the base class’s constructor
|
||||
was called.
|
||||
- Also, make sure to pass non-zero fold values when creating
|
||||
subclasses in various methods. Previously, fold was silently
|
||||
ignored.
|
||||
- gh-129873: Simplify displaying the IDLE doc by only copying
|
||||
the text section of idle.html to idlelib/help.html. Patch by
|
||||
Stan Ulbrych.
|
||||
- gh-131417: Mention asyncio.Future and asyncio.Task in generic
|
||||
classes list.
|
||||
- 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().
|
||||
- gh-131670: Fix anext() failing on sync __anext__() raising an
|
||||
exception.
|
||||
- gh-130809: Fixed an issue where _PyFrame_LocalsToFast tries
|
||||
to write module level values to hidden fasts.
|
||||
- gh-130775: Do not crash on negative column and end_column in
|
||||
ast locations.
|
||||
- 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-130163: Fix possible crashes related to concurrent change
|
||||
and use of the sys module attributes.
|
||||
- gh-88887: Fixing multiprocessing Resource Tracker process
|
||||
leaking, usually observed when running Python as PID 1.
|
||||
- gh-116042: Fix location for SyntaxErrors of invalid escapes
|
||||
in the tokenizer. Patch by Pablo Galindo
|
||||
- gh-128632: Disallow __classdict__ as the name of a type
|
||||
parameter. Using this name would previously crash the
|
||||
interpreter in some circumstances.
|
||||
- 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-107526: Revert converting vars, dir, next, getattr, and
|
||||
iter to argument clinic.
|
||||
- gh-107674: Fixed performance regression in sys.settrace.
|
||||
- gh-131740: Update PyUnstable_GC_VisitObjects to traverse perm
|
||||
gen.
|
||||
- gh-131865: The DTrace build now properly passes the CC
|
||||
and CFLAGS variables to the dtrace command when utilizing
|
||||
SystemTap on Linux.
|
||||
- gh-130740: Ensure that Python.h is included before
|
||||
stdbool.h unless pyconfig.h is included before or in some
|
||||
platform-specific contexts.
|
||||
- gh-129838: Don’t redefine _Py_NO_SANITIZE_UNDEFINED when
|
||||
compiling with a recent GCC version and undefined sanitizer
|
||||
enabled.
|
||||
- gh-129660: Drop test_embed from PGO training, whose
|
||||
contribution in recent versions is considered to be
|
||||
ignorable.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Mar 10 15:44:31 UTC 2025 - Bernhard Wiedemann <bwiedemann@suse.com>
|
||||
|
||||
|
@@ -118,7 +118,7 @@
|
||||
# _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.12.9
|
||||
Version: 3.12.10
|
||||
Release: 0
|
||||
Summary: Python 3 Interpreter
|
||||
License: Python-2.0
|
||||
|
@@ -1,18 +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(-)
|
||||
|
||||
Index: Python-3.12.4/Lib/test/test_subprocess.py
|
||||
Index: Python-3.12.10/Lib/test/test_subprocess.py
|
||||
===================================================================
|
||||
--- Python-3.12.4.orig/Lib/test/test_subprocess.py
|
||||
+++ Python-3.12.4/Lib/test/test_subprocess.py
|
||||
@@ -280,7 +280,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')
|
||||
--- Python-3.12.10.orig/Lib/test/test_subprocess.py 2025-04-11 21:04:45.154639562 +0200
|
||||
+++ Python-3.12.10/Lib/test/test_subprocess.py 2025-04-11 21:12:03.374471647 +0200
|
||||
@@ -274,7 +274,11 @@
|
||||
output = subprocess.check_output(
|
||||
[sys.executable, "-c",
|
||||
"import time; time.sleep(3600)"],
|
||||
- timeout=0.1)
|
||||
+ # Some heavily loaded buildbots (sparc Debian 3.x) require
|
||||
+ # this much time to start and print.
|
||||
+ # timeout=0.1)
|
||||
+ # OBS might require even more
|
||||
+ timeout=10)
|
||||
|
||||
def test_call_kwargs(self):
|
||||
# call() function with keyword args
|
||||
|
Reference in New Issue
Block a user