Python-checkins
Threads by month
- ----- 2024 -----
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
April 2024
- 1 participants
- 544 discussions
https://github.com/python/cpython/commit/cae4cdd07ddfcd8bcc05d683bac5381539…
commit: cae4cdd07ddfcd8bcc05d683bac53815391c9907
branch: main
author: Nice Zombies <nineteendo19d0(a)gmail.com>
committer: AlexWaygood <Alex.Waygood(a)Gmail.com>
date: 2024-04-02T21:32:35+01:00
summary:
gh-117349: Micro-optimize a few `os.path` functions (#117350)
Co-authored-by: Alex Waygood <Alex.Waygood(a)Gmail.com>
Co-authored-by: Barney Gale <barney.gale(a)gmail.com>
Co-authored-by: Pieter Eendebak <pieter.eendebak(a)gmail.com>
files:
A Misc/NEWS.d/next/Core and Builtins/2024-03-29-15-04-13.gh-issue-117349.OB9kQQ.rst
M Lib/ntpath.py
M Lib/posixpath.py
M Misc/ACKS
diff --git a/Lib/ntpath.py b/Lib/ntpath.py
index ecfc7d48dbb192..0650f14f89f10b 100644
--- a/Lib/ntpath.py
+++ b/Lib/ntpath.py
@@ -102,11 +102,11 @@ def join(path, *paths):
if isinstance(path, bytes):
sep = b'\\'
seps = b'\\/'
- colon = b':'
+ colon_seps = b':\\/'
else:
sep = '\\'
seps = '\\/'
- colon = ':'
+ colon_seps = ':\\/'
try:
if not paths:
path[:0] + sep #23780: Ensure compatible data type even if p is null.
@@ -135,7 +135,7 @@ def join(path, *paths):
result_path = result_path + p_path
## add separator between UNC and non-absolute path
if (result_path and not result_root and
- result_drive and result_drive[-1:] not in colon + seps):
+ result_drive and result_drive[-1] not in colon_seps):
return result_drive + sep + result_path
return result_drive + result_root + result_path
except (TypeError, AttributeError, BytesWarning):
@@ -279,7 +279,7 @@ def isjunction(path):
st = os.lstat(path)
except (OSError, ValueError, AttributeError):
return False
- return bool(st.st_reparse_tag == stat.IO_REPARSE_TAG_MOUNT_POINT)
+ return st.st_reparse_tag == stat.IO_REPARSE_TAG_MOUNT_POINT
else:
# Use genericpath.isjunction as imported above
pass
@@ -340,8 +340,8 @@ def isreserved(path):
def _isreservedname(name):
"""Return true if the filename is reserved by the system."""
# Trailing dots and spaces are reserved.
- if name.endswith(('.', ' ')) and name not in ('.', '..'):
- return True
+ if name[-1:] in ('.', ' '):
+ return name not in ('.', '..')
# Wildcards, separators, colon, and pipe (*?"<>/\:|) are reserved.
# ASCII control characters (0-31) are reserved.
# Colon is reserved for file streams (e.g. "name:stream[:type]").
@@ -350,9 +350,7 @@ def _isreservedname(name):
# DOS device names are reserved (e.g. "nul" or "nul .txt"). The rules
# are complex and vary across Windows versions. On the side of
# caution, return True for names that may not be reserved.
- if name.partition('.')[0].rstrip(' ').upper() in _reserved_names:
- return True
- return False
+ return name.partition('.')[0].rstrip(' ').upper() in _reserved_names
# Expand paths beginning with '~' or '~user'.
@@ -381,13 +379,10 @@ def expanduser(path):
if 'USERPROFILE' in os.environ:
userhome = os.environ['USERPROFILE']
- elif not 'HOMEPATH' in os.environ:
+ elif 'HOMEPATH' not in os.environ:
return path
else:
- try:
- drive = os.environ['HOMEDRIVE']
- except KeyError:
- drive = ''
+ drive = os.environ.get('HOMEDRIVE', '')
userhome = join(drive, os.environ['HOMEPATH'])
if i != 1: #~user
@@ -727,7 +722,8 @@ def realpath(path, *, strict=False):
new_unc_prefix = b'\\\\'
cwd = os.getcwdb()
# bpo-38081: Special case for realpath(b'nul')
- if normcase(path) == normcase(os.fsencode(devnull)):
+ devnull = b'nul'
+ if normcase(path) == devnull:
return b'\\\\.\\NUL'
else:
prefix = '\\\\?\\'
@@ -735,7 +731,8 @@ def realpath(path, *, strict=False):
new_unc_prefix = '\\\\'
cwd = os.getcwd()
# bpo-38081: Special case for realpath('nul')
- if normcase(path) == normcase(devnull):
+ devnull = 'nul'
+ if normcase(path) == devnull:
return '\\\\.\\NUL'
had_prefix = path.startswith(prefix)
if not had_prefix and not isabs(path):
diff --git a/Lib/posixpath.py b/Lib/posixpath.py
index 4fc02be69bd6e1..76ee721bfb5e33 100644
--- a/Lib/posixpath.py
+++ b/Lib/posixpath.py
@@ -213,15 +213,8 @@ def ismount(path):
except (OSError, ValueError):
return False
- dev1 = s1.st_dev
- dev2 = s2.st_dev
- if dev1 != dev2:
- return True # path/.. on a different device as path
- ino1 = s1.st_ino
- ino2 = s2.st_ino
- if ino1 == ino2:
- return True # path/.. is the same i-node as path
- return False
+ # path/.. on a different device as path or the same i-node as path
+ return s1.st_dev != s2.st_dev or s1.st_ino == s2.st_ino
# Expand paths beginning with '~' or '~user'.
@@ -270,7 +263,7 @@ def expanduser(path):
return path
name = path[1:i]
if isinstance(name, bytes):
- name = str(name, 'ASCII')
+ name = name.decode('ascii')
try:
pwent = pwd.getpwnam(name)
except KeyError:
@@ -359,21 +352,19 @@ def normpath(path):
path = os.fspath(path)
if isinstance(path, bytes):
sep = b'/'
- empty = b''
dot = b'.'
dotdot = b'..'
else:
sep = '/'
- empty = ''
dot = '.'
dotdot = '..'
- if path == empty:
+ if not path:
return dot
_, initial_slashes, path = splitroot(path)
comps = path.split(sep)
new_comps = []
for comp in comps:
- if comp in (empty, dot):
+ if not comp or comp == dot:
continue
if (comp != dotdot or (not initial_slashes and not new_comps) or
(new_comps and new_comps[-1] == dotdot)):
@@ -396,12 +387,12 @@ def normpath(path):
def abspath(path):
"""Return an absolute path."""
path = os.fspath(path)
- if not isabs(path):
- if isinstance(path, bytes):
- cwd = os.getcwdb()
- else:
- cwd = os.getcwd()
- path = join(cwd, path)
+ if isinstance(path, bytes):
+ if not path.startswith(b'/'):
+ path = join(os.getcwdb(), path)
+ else:
+ if not path.startswith('/'):
+ path = join(os.getcwd(), path)
return normpath(path)
@@ -417,6 +408,7 @@ def realpath(filename, *, strict=False):
# Join two paths, normalizing and eliminating any symbolic links
# encountered in the second path.
+# Two leading slashes are replaced by a single slash.
def _joinrealpath(path, rest, strict, seen):
if isinstance(path, bytes):
sep = b'/'
@@ -427,7 +419,7 @@ def _joinrealpath(path, rest, strict, seen):
curdir = '.'
pardir = '..'
- if isabs(rest):
+ if rest.startswith(sep):
rest = rest[1:]
path = sep
@@ -439,10 +431,15 @@ def _joinrealpath(path, rest, strict, seen):
if name == pardir:
# parent dir
if path:
- path, name = split(path)
+ parent, name = split(path)
if name == pardir:
- path = join(path, pardir, pardir)
+ # ../..
+ path = join(path, pardir)
+ else:
+ # foo/bar/.. -> foo
+ path = parent
else:
+ # ..
path = pardir
continue
newpath = join(path, name)
diff --git a/Misc/ACKS b/Misc/ACKS
index 03e458d170d2b8..fe014a364dd82d 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -191,6 +191,7 @@ Finn Bock
Paul Boddie
Matthew Boedicker
Robin Boerdijk
+Wannes Boeykens
Andra Bogildea
Matt Bogosian
Nikolay Bogoychev
diff --git a/Misc/NEWS.d/next/Core and Builtins/2024-03-29-15-04-13.gh-issue-117349.OB9kQQ.rst b/Misc/NEWS.d/next/Core and Builtins/2024-03-29-15-04-13.gh-issue-117349.OB9kQQ.rst
new file mode 100644
index 00000000000000..7a7bc689002017
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2024-03-29-15-04-13.gh-issue-117349.OB9kQQ.rst
@@ -0,0 +1 @@
+Optimise several functions in :mod:`os.path`.
1
0
02 Apr '24
https://github.com/python/cpython/commit/8eda146e87d5531c9d2bc62fd1fea3bd31…
commit: 8eda146e87d5531c9d2bc62fd1fea3bd3163f9b1
branch: main
author: Guido van Rossum <guido(a)python.org>
committer: gvanrossum <gvanrossum(a)gmail.com>
date: 2024-04-02T18:25:48Z
summary:
Fix successor opcode name printing in Tier 2 DEOPT debug message (#117471)
files:
M Python/ceval.c
diff --git a/Python/ceval.c b/Python/ceval.c
index 1b13eb1702355f..f3b73165e9f28b 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -1078,7 +1078,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
printf("DEOPT: [UOp ");
_PyUOpPrint(&next_uop[-1]);
printf(" -> %s]\n",
- _PyOpcode_OpName[frame->instr_ptr->op.code]);
+ _PyOpcode_OpName[next_instr->op.code]);
}
#endif
OPT_HIST(trace_uop_execution_counter, trace_run_length_hist);
1
0
https://github.com/python/cpython/commit/027fa2eccf39ddccdf7b416d16601277a7…
commit: 027fa2eccf39ddccdf7b416d16601277a7112054
branch: main
author: Sam Gross <colesbury(a)gmail.com>
committer: colesbury <colesbury(a)gmail.com>
date: 2024-04-02T10:45:00-04:00
summary:
gh-112087: Make `list.extend(dict)` behave atomically (#117438)
Add a special case for `list.extend(dict)` and `list(dict)` so that those
patterns behave atomically with respect to modifications to the list or
dictionary.
This is required by multiprocessing, which assumes that
`list(_finalizer_registry)` is atomic.
files:
M Objects/listobject.c
diff --git a/Objects/listobject.c b/Objects/listobject.c
index 470ad8eb8135db..472c471d9968a4 100644
--- a/Objects/listobject.c
+++ b/Objects/listobject.c
@@ -1374,6 +1374,11 @@ _list_extend(PyListObject *self, PyObject *iterable)
res = list_extend_set(self, (PySetObject *)iterable);
Py_END_CRITICAL_SECTION2();
}
+ else if (PyDict_CheckExact(iterable)) {
+ Py_BEGIN_CRITICAL_SECTION2(self, iterable);
+ res = list_extend_dict(self, (PyDictObject *)iterable, 0 /*keys*/);
+ Py_END_CRITICAL_SECTION2();
+ }
else if (Py_IS_TYPE(iterable, &PyDictKeys_Type)) {
PyDictObject *dict = ((_PyDictViewObject *)iterable)->dv_dict;
Py_BEGIN_CRITICAL_SECTION2(self, dict);
1
0
02 Apr '24
https://github.com/python/cpython/commit/954d616b4c8cd091214aa3b8ea886bcf90…
commit: 954d616b4c8cd091214aa3b8ea886bcf9067243a
branch: main
author: Sam Gross <colesbury(a)gmail.com>
committer: colesbury <colesbury(a)gmail.com>
date: 2024-04-02T10:44:26-04:00
summary:
gh-117440: Make `syslog` thread-safe in free-threaded builds (#117441)
Use critical sections to protect access to the syslog module.
files:
M Modules/clinic/syslogmodule.c.h
M Modules/syslogmodule.c
diff --git a/Modules/clinic/syslogmodule.c.h b/Modules/clinic/syslogmodule.c.h
index 58b0ea57b065b3..77cf24ea5ba9ca 100644
--- a/Modules/clinic/syslogmodule.c.h
+++ b/Modules/clinic/syslogmodule.c.h
@@ -6,6 +6,7 @@ preserve
# include "pycore_gc.h" // PyGC_Head
# include "pycore_runtime.h" // _Py_ID()
#endif
+#include "pycore_critical_section.h"// Py_BEGIN_CRITICAL_SECTION()
#include "pycore_modsupport.h" // _PyArg_UnpackKeywords()
PyDoc_STRVAR(syslog_openlog__doc__,
@@ -88,7 +89,9 @@ syslog_openlog(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObje
goto exit;
}
skip_optional_pos:
+ Py_BEGIN_CRITICAL_SECTION(module);
return_value = syslog_openlog_impl(module, ident, logopt, facility);
+ Py_END_CRITICAL_SECTION();
exit:
return return_value;
@@ -129,7 +132,9 @@ syslog_syslog(PyObject *module, PyObject *args)
PyErr_SetString(PyExc_TypeError, "syslog.syslog requires 1 to 2 arguments");
goto exit;
}
+ Py_BEGIN_CRITICAL_SECTION(module);
return_value = syslog_syslog_impl(module, group_left_1, priority, message);
+ Py_END_CRITICAL_SECTION();
exit:
return return_value;
@@ -150,7 +155,13 @@ syslog_closelog_impl(PyObject *module);
static PyObject *
syslog_closelog(PyObject *module, PyObject *Py_UNUSED(ignored))
{
- return syslog_closelog_impl(module);
+ PyObject *return_value = NULL;
+
+ Py_BEGIN_CRITICAL_SECTION(module);
+ return_value = syslog_closelog_impl(module);
+ Py_END_CRITICAL_SECTION();
+
+ return return_value;
}
PyDoc_STRVAR(syslog_setlogmask__doc__,
@@ -251,4 +262,4 @@ syslog_LOG_UPTO(PyObject *module, PyObject *arg)
exit:
return return_value;
}
-/*[clinic end generated code: output=86ca2fd84b2da98e input=a9049054013a1b77]*/
+/*[clinic end generated code: output=8d25899bd31969d3 input=a9049054013a1b77]*/
diff --git a/Modules/syslogmodule.c b/Modules/syslogmodule.c
index 62c7816f891ee2..cb3f2b03990cb8 100644
--- a/Modules/syslogmodule.c
+++ b/Modules/syslogmodule.c
@@ -132,6 +132,7 @@ syslog_get_argv(void)
/*[clinic input]
+@critical_section
syslog.openlog
ident: unicode = NULL
@@ -144,7 +145,7 @@ Set logging options of subsequent syslog() calls.
static PyObject *
syslog_openlog_impl(PyObject *module, PyObject *ident, long logopt,
long facility)
-/*[clinic end generated code: output=5476c12829b6eb75 input=8a987a96a586eee7]*/
+/*[clinic end generated code: output=5476c12829b6eb75 input=ee700b8786f81c23]*/
{
// Since the sys.openlog changes the process level state of syslog library,
// this operation is only allowed for the main interpreter.
@@ -189,6 +190,7 @@ syslog_openlog_impl(PyObject *module, PyObject *ident, long logopt,
/*[clinic input]
+@critical_section
syslog.syslog
[
@@ -205,7 +207,7 @@ Send the string message to the system logger.
static PyObject *
syslog_syslog_impl(PyObject *module, int group_left_1, int priority,
const char *message)
-/*[clinic end generated code: output=c3dbc73445a0e078 input=ac83d92b12ea3d4e]*/
+/*[clinic end generated code: output=c3dbc73445a0e078 input=6588ddb0b113af8e]*/
{
if (PySys_Audit("syslog.syslog", "is", priority, message) < 0) {
return NULL;
@@ -243,6 +245,7 @@ syslog_syslog_impl(PyObject *module, int group_left_1, int priority,
/*[clinic input]
+@critical_section
syslog.closelog
Reset the syslog module values and call the system library closelog().
@@ -250,7 +253,7 @@ Reset the syslog module values and call the system library closelog().
static PyObject *
syslog_closelog_impl(PyObject *module)
-/*[clinic end generated code: output=97890a80a24b1b84 input=fb77a54d447acf07]*/
+/*[clinic end generated code: output=97890a80a24b1b84 input=167f489868bd5a72]*/
{
// Since the sys.closelog changes the process level state of syslog library,
// this operation is only allowed for the main interpreter.
1
0
02 Apr '24
https://github.com/python/cpython/commit/e569f9132b5bdc1c103116a020e19e3ccc…
commit: e569f9132b5bdc1c103116a020e19e3ccc20cf34
branch: main
author: Petr Viktorin <encukou(a)gmail.com>
committer: encukou <encukou(a)gmail.com>
date: 2024-04-02T16:08:16+02:00
summary:
gh-117074: Update Traversable.joinpath docs to the 3.11+ protocol (GH-117113)
files:
M Doc/library/importlib.resources.abc.rst
diff --git a/Doc/library/importlib.resources.abc.rst b/Doc/library/importlib.resources.abc.rst
index c508b6ba965cc0..c25c48530722e6 100644
--- a/Doc/library/importlib.resources.abc.rst
+++ b/Doc/library/importlib.resources.abc.rst
@@ -109,13 +109,35 @@
Return True if self is a file.
- .. abstractmethod:: joinpath(child)
+ .. abstractmethod:: joinpath(*pathsegments)
- Return Traversable child in self.
+ Traverse directories according to *pathsegments* and return
+ the result as :class:`!Traversable`.
+
+ Each *pathsegments* argument may contain multiple names separated by
+ forward slashes (``/``, ``posixpath.sep`` ).
+ For example, the following are equivalent::
+
+ files.joinpath('subdir', 'subsuddir', 'file.txt')
+ files.joinpath('subdir/subsuddir/file.txt')
+
+ Note that some :class:`!Traversable` implementations
+ might not be updated to the latest version of the protocol.
+ For compatibility with such implementations, provide a single argument
+ without path separators to each call to ``joinpath``. For example::
+
+ files.joinpath('subdir').joinpath('subsubdir').joinpath('file.txt')
+
+ .. versionchanged:: 3.11
+
+ ``joinpath`` accepts multiple *pathsegments*, and these segments
+ may contain forward slashes as path separators.
+ Previously, only a single *child* argument was accepted.
.. abstractmethod:: __truediv__(child)
Return Traversable child in self.
+ Equivalent to ``joinpath(child)``.
.. abstractmethod:: open(mode='r', *args, **kwargs)
1
0
https://github.com/python/cpython/commit/de54cf5be371a6f5e2e9f208c38def5f81…
commit: de54cf5be371a6f5e2e9f208c38def5f81d3ef02
branch: 3.11
author: Pablo Galindo <pablogsal(a)gmail.com>
committer: pablogsal <Pablogsal(a)gmail.com>
date: 2024-04-02T09:25:04+01:00
summary:
Python 3.11.9
files:
A Misc/NEWS.d/3.11.9.rst
D Misc/NEWS.d/next/Build/2024-02-08-19-36-20.gh-issue-115167.LB9nDK.rst
D Misc/NEWS.d/next/Build/2024-03-04-12-43-42.gh-issue-116313.cLLb8S.rst
D Misc/NEWS.d/next/C API/2024-03-20-13-13-22.gh-issue-117021.0Q5jBx.rst
D Misc/NEWS.d/next/Core and Builtins/2022-09-04-16-51-56.gh-issue-96497.HTBuIL.rst
D Misc/NEWS.d/next/Core and Builtins/2024-02-05-12-40-26.gh-issue-115011.L1AKF5.rst
D Misc/NEWS.d/next/Core and Builtins/2024-02-14-23-50-55.gh-issue-112087.H_4W_v.rst
D Misc/NEWS.d/next/Core and Builtins/2024-02-22-16-17-53.gh-issue-115823.c1TreJ.rst
D Misc/NEWS.d/next/Core and Builtins/2024-02-28-17-25-19.gh-issue-116034.-Uu9tf.rst
D Misc/NEWS.d/next/Core and Builtins/2024-03-04-10-19-51.gh-issue-116296.gvtxyU.rst
D Misc/NEWS.d/next/Documentation/2024-02-12-12-26-17.gh-issue-115233.aug6r9.rst
D Misc/NEWS.d/next/Documentation/2024-02-14-20-17-04.gh-issue-115399.fb9a0R.rst
D Misc/NEWS.d/next/IDLE/2023-12-09-11-04-26.gh-issue-88516.SIIvfs.rst
D Misc/NEWS.d/next/Library/2019-04-06-23-50-59.bpo-33775.0yhMDc.rst
D Misc/NEWS.d/next/Library/2019-08-27-01-03-26.gh-issue-66543._TRpYr.rst
D Misc/NEWS.d/next/Library/2020-12-15-22-30-49.bpo-42125.UGyseY.rst
D Misc/NEWS.d/next/Library/2021-05-03-11-04-12.bpo-43952.Me7fJe.rst
D Misc/NEWS.d/next/Library/2021-08-24-20-47-37.bpo-44865.c3BhZS.rst
D Misc/NEWS.d/next/Library/2022-05-25-17-49-04.gh-issue-93205.DjhFVR.rst
D Misc/NEWS.d/next/Library/2022-08-26-15-50-53.gh-issue-96310.0NssDh.rst
D Misc/NEWS.d/next/Library/2022-11-22-23-17-43.gh-issue-95782.an_and.rst
D Misc/NEWS.d/next/Library/2023-01-09-14-08-02.gh-issue-100884.DcmdLl.rst
D Misc/NEWS.d/next/Library/2023-01-12-14-16-01.gh-issue-100985.GT5Fvd.rst
D Misc/NEWS.d/next/Library/2023-04-02-21-20-35.gh-issue-60346.7mjgua.rst
D Misc/NEWS.d/next/Library/2023-06-16-19-17-06.gh-issue-105866.0NBveV.rst
D Misc/NEWS.d/next/Library/2023-08-02-01-17-32.gh-issue-107155.Mj1K9L.rst
D Misc/NEWS.d/next/Library/2023-10-07-06-15-13.gh-issue-90095.gWn1ka.rst
D Misc/NEWS.d/next/Library/2023-11-07-10-22-06.gh-issue-111775.IoVxfX.rst
D Misc/NEWS.d/next/Library/2023-11-20-16-15-44.gh-issue-112281.gH4EVk.rst
D Misc/NEWS.d/next/Library/2024-01-11-15-10-53.gh-issue-97959.UOj6d4.rst
D Misc/NEWS.d/next/Library/2024-01-30-23-28-29.gh-issue-114763.BRjKkg.rst
D Misc/NEWS.d/next/Library/2024-02-07-12-37-52.gh-issue-79382.Yz_5WB.rst
D Misc/NEWS.d/next/Library/2024-02-08-13-26-14.gh-issue-115059.DqP9dr.rst
D Misc/NEWS.d/next/Library/2024-02-08-14-21-28.gh-issue-115133.ycl4ko.rst
D Misc/NEWS.d/next/Library/2024-02-09-07-20-16.gh-issue-115165.yfJLXA.rst
D Misc/NEWS.d/next/Library/2024-02-09-17-56-06.gh-issue-115198.QKrxUQ.rst
D Misc/NEWS.d/next/Library/2024-02-09-19-41-48.gh-issue-115197.20wkWH.rst
D Misc/NEWS.d/next/Library/2024-02-11-20-23-36.gh-issue-114563.RzxNYT.rst
D Misc/NEWS.d/next/Library/2024-02-13-18-27-03.gh-issue-115392.gle5tp.rst
D Misc/NEWS.d/next/Library/2024-02-15-19-11-49.gh-issue-101293.898b8l.rst
D Misc/NEWS.d/next/Library/2024-02-15-23-42-54.gh-issue-112006.4wxcK-.rst
D Misc/NEWS.d/next/Library/2024-02-16-10-18-25.gh-issue-115570.bI6uu3.rst
D Misc/NEWS.d/next/Library/2024-02-17-18-47-12.gh-issue-115618.napiNp.rst
D Misc/NEWS.d/next/Library/2024-02-20-16-42-54.gh-issue-115712.EXVMXw.rst
D Misc/NEWS.d/next/Library/2024-02-20-22-02-34.gh-issue-67044.QF9_Ru.rst
D Misc/NEWS.d/next/Library/2024-02-21-17-54-59.gh-issue-74668.JT-Q8W.rst
D Misc/NEWS.d/next/Library/2024-02-22-11-29-27.gh-issue-115809.9H1DhB.rst
D Misc/NEWS.d/next/Library/2024-02-24-18-48-14.gh-issue-115886.rgM6AF.rst
D Misc/NEWS.d/next/Library/2024-02-25-19-20-05.gh-issue-115881.ro_Kuw.rst
D Misc/NEWS.d/next/Library/2024-02-27-13-05-51.gh-issue-75988.In6LlB.rst
D Misc/NEWS.d/next/Library/2024-02-29-17-06-54.gh-issue-76511.WqjRLP.rst
D Misc/NEWS.d/next/Library/2024-02-29-20-06-06.gh-issue-87115.FVMiOR.rst
D Misc/NEWS.d/next/Library/2024-03-01-11-57-32.gh-issue-88352.bZ68rw.rst
D Misc/NEWS.d/next/Library/2024-03-01-14-22-08.gh-issue-115978.r2ePTo.rst
D Misc/NEWS.d/next/Library/2024-03-01-20-23-57.gh-issue-90535.wXm-jC.rst
D Misc/NEWS.d/next/Library/2024-03-05-02-09-18.gh-issue-116325.FmlBYv.rst
D Misc/NEWS.d/next/Library/2024-03-05-20-53-34.gh-issue-116143.sww6Zl.rst
D Misc/NEWS.d/next/Library/2024-03-06-18-30-37.gh-issue-116401.3Wcda2.rst
D Misc/NEWS.d/next/Library/2024-03-08-11-31-49.gh-issue-116484.VMAsU7.rst
D Misc/NEWS.d/next/Library/2024-03-11-12-11-10.gh-issue-116600.FcNBy_.rst
D Misc/NEWS.d/next/Library/2024-03-14-10-01-23.gh-issue-116811._h5iKP.rst
D Misc/NEWS.d/next/Library/2024-03-14-14-01-46.gh-issue-116764.moB3Lc.rst
D Misc/NEWS.d/next/Library/2024-03-14-20-59-28.gh-issue-90095.7UaJ1U.rst
D Misc/NEWS.d/next/Library/2024-03-18-14-36-50.gh-issue-116957.dTCs4f.rst
D Misc/NEWS.d/next/Library/2024-03-19-11-08-26.gh-issue-90872.ghys95.rst
D Misc/NEWS.d/next/Library/2024-03-21-07-27-36.gh-issue-117110.9K1InX.rst
D Misc/NEWS.d/next/Library/2024-03-21-17-07-38.gh-issue-117084.w1mTpT.rst
D Misc/NEWS.d/next/Library/2024-03-23-14-26-18.gh-issue-117178.vTisTG.rst
D Misc/NEWS.d/next/Library/2024-03-27-21-05-52.gh-issue-117310.Bt2wox.rst
D Misc/NEWS.d/next/Security/2024-01-26-22-14-09.gh-issue-114572.t1QMQD.rst
D Misc/NEWS.d/next/Security/2024-02-12-00-33-01.gh-issue-115243.e1oGX8.rst
D Misc/NEWS.d/next/Security/2024-02-13-15-14-39.gh-issue-115399.xT-scP.rst
D Misc/NEWS.d/next/Security/2024-02-18-03-14-40.gh-issue-115398.tzvxH8.rst
D Misc/NEWS.d/next/Tests/2024-02-09-10-59-17.gh-issue-115198.1JP6LG.rst
D Misc/NEWS.d/next/Tests/2024-02-17-08-25-01.gh-issue-115596.RGPCrR.rst
D Misc/NEWS.d/next/Tests/2024-02-18-14-20-52.gh-issue-115122.3rGNo9.rst
D Misc/NEWS.d/next/Tests/2024-02-20-15-47-41.gh-issue-115720.w8i8UG.rst
D Misc/NEWS.d/next/Tests/2024-03-06-11-00-36.gh-issue-116307.Uij0t_.rst
D Misc/NEWS.d/next/Tests/2024-03-13-12-06-49.gh-issue-115979.zsNpQD.rst
D Misc/NEWS.d/next/Tests/2024-03-24-23-49-25.gh-issue-117187.eMLT5n.rst
D Misc/NEWS.d/next/Tests/2024-03-25-21-31-49.gh-issue-83434.U7Z8cY.rst
D Misc/NEWS.d/next/Tools-Demos/2024-02-14-15-58-13.gh-issue-113516.TyIHWx.rst
D Misc/NEWS.d/next/Windows/2024-02-06-09-05-13.gh-issue-115009.ShMjZs.rst
D Misc/NEWS.d/next/Windows/2024-02-15-23-16-31.gh-issue-115543.otrWnw.rst
D Misc/NEWS.d/next/Windows/2024-02-21-23-48-59.gh-issue-115554.02mpQC.rst
D Misc/NEWS.d/next/Windows/2024-02-24-23-03-43.gh-issue-91227.sL4zWC.rst
D Misc/NEWS.d/next/Windows/2024-03-14-01-58-22.gh-issue-116773.H2UldY.rst
M Include/patchlevel.h
M Lib/pydoc_data/topics.py
M README.rst
diff --git a/Include/patchlevel.h b/Include/patchlevel.h
index 6579bdb08b3b40..6dea1dd4486bec 100644
--- a/Include/patchlevel.h
+++ b/Include/patchlevel.h
@@ -18,12 +18,12 @@
/*--start constants--*/
#define PY_MAJOR_VERSION 3
#define PY_MINOR_VERSION 11
-#define PY_MICRO_VERSION 8
+#define PY_MICRO_VERSION 9
#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL
#define PY_RELEASE_SERIAL 0
/* Version as a string */
-#define PY_VERSION "3.11.8+"
+#define PY_VERSION "3.11.9"
/*--end constants--*/
/* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2.
diff --git a/Lib/pydoc_data/topics.py b/Lib/pydoc_data/topics.py
index d43b5c6b19efaa..cec9b8b8183f72 100644
--- a/Lib/pydoc_data/topics.py
+++ b/Lib/pydoc_data/topics.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-# Autogenerated by Sphinx on Tue Feb 6 21:21:08 2024
+# Autogenerated by Sphinx on Tue Apr 2 09:24:48 2024
# as part of the release process.
topics = {'assert': 'The "assert" statement\n'
'**********************\n'
@@ -792,9 +792,9 @@
'\n'
'object.__dir__(self)\n'
'\n'
- ' Called when "dir()" is called on the object. A '
- 'sequence must be\n'
- ' returned. "dir()" converts the returned sequence to a '
+ ' Called when "dir()" is called on the object. An '
+ 'iterable must be\n'
+ ' returned. "dir()" converts the returned iterable to a '
'list and\n'
' sorts it.\n'
'\n'
@@ -821,8 +821,8 @@
'returned.\n'
'\n'
'The "__dir__" function should accept no arguments, and '
- 'return a\n'
- 'sequence of strings that represents the names accessible '
+ 'return an\n'
+ 'iterable of strings that represents the names accessible '
'on module. If\n'
'present, this function overrides the standard "dir()" '
'search on a\n'
@@ -4492,7 +4492,7 @@
'reflection,\n'
' and "__eq__()" and "__ne__()" are their own reflection. '
'If the\n'
- ' operands are of different types, and right operand’s '
+ ' operands are of different types, and the right operand’s '
'type is a\n'
' direct or indirect subclass of the left operand’s type, '
'the\n'
@@ -4502,6 +4502,11 @@
'is not\n'
' considered.\n'
'\n'
+ ' When no appropriate method returns any value other than\n'
+ ' "NotImplemented", the "==" and "!=" operators will fall '
+ 'back to\n'
+ ' "is" and "is not", respectively.\n'
+ '\n'
'object.__hash__(self)\n'
'\n'
' Called by built-in function "hash()" and for operations '
@@ -4957,22 +4962,23 @@
'the\n'
'current directory, it is read with "\'utf-8\'" encoding and '
'executed as\n'
- 'if it had been typed at the debugger prompt. This is '
- 'particularly\n'
- 'useful for aliases. If both files exist, the one in the home\n'
- 'directory is read first and aliases defined there can be '
- 'overridden by\n'
- 'the local file.\n'
- '\n'
- 'Changed in version 3.11: ".pdbrc" is now read with "\'utf-8\'" '
- 'encoding.\n'
- 'Previously, it was read with the system locale encoding.\n'
+ 'if it had been typed at the debugger prompt, with the exception '
+ 'that\n'
+ 'empty lines and lines starting with "#" are ignored. This is\n'
+ 'particularly useful for aliases. If both files exist, the one '
+ 'in the\n'
+ 'home directory is read first and aliases defined there can be\n'
+ 'overridden by the local file.\n'
'\n'
'Changed in version 3.2: ".pdbrc" can now contain commands that\n'
'continue debugging, such as "continue" or "next". Previously, '
'these\n'
'commands had no effect.\n'
'\n'
+ 'Changed in version 3.11: ".pdbrc" is now read with "\'utf-8\'" '
+ 'encoding.\n'
+ 'Previously, it was read with the system locale encoding.\n'
+ '\n'
'h(elp) [command]\n'
'\n'
' Without argument, print the list of available commands. With '
@@ -8110,7 +8116,7 @@
'"__rsub__()"\n'
' method, "type(y).__rsub__(y, x)" is called if '
'"type(x).__sub__(x,\n'
- ' y)" returns *NotImplemented*.\n'
+ ' y)" returns "NotImplemented".\n'
'\n'
' Note that ternary "pow()" will not try calling '
'"__rpow__()" (the\n'
@@ -8153,14 +8159,18 @@
'the result\n'
' (which could be, but does not have to be, *self*). If a '
'specific\n'
- ' method is not defined, the augmented assignment falls '
- 'back to the\n'
- ' normal methods. For instance, if *x* is an instance of '
- 'a class\n'
- ' with an "__iadd__()" method, "x += y" is equivalent to '
- '"x =\n'
- ' x.__iadd__(y)" . Otherwise, "x.__add__(y)" and '
- '"y.__radd__(x)" are\n'
+ ' method is not defined, or if that method returns '
+ '"NotImplemented",\n'
+ ' the augmented assignment falls back to the normal '
+ 'methods. For\n'
+ ' instance, if *x* is an instance of a class with an '
+ '"__iadd__()"\n'
+ ' method, "x += y" is equivalent to "x = x.__iadd__(y)" . '
+ 'If\n'
+ ' "__iadd__()" does not exist, or if "x.__iadd__(y)" '
+ 'returns\n'
+ ' "NotImplemented", "x.__add__(y)" and "y.__radd__(x)" '
+ 'are\n'
' considered, as with the evaluation of "x + y". In '
'certain\n'
' situations, augmented assignment can result in '
@@ -8241,7 +8251,7 @@
'Every object has an identity, a type and a value. An object’s\n'
'*identity* never changes once it has been created; you may think '
'of it\n'
- 'as the object’s address in memory. The ‘"is"’ operator compares '
+ 'as the object’s address in memory. The "is" operator compares '
'the\n'
'identity of two objects; the "id()" function returns an integer\n'
'representing its identity.\n'
@@ -8306,7 +8316,7 @@
'Note that the use of the implementation’s tracing or debugging\n'
'facilities may keep objects alive that would normally be '
'collectable.\n'
- 'Also note that catching an exception with a ‘"try"…"except"’ '
+ 'Also note that catching an exception with a "try"…"except" '
'statement\n'
'may keep objects alive.\n'
'\n'
@@ -8321,8 +8331,9 @@
'release the external resource, usually a "close()" method. '
'Programs\n'
'are strongly recommended to explicitly close such objects. The\n'
- '‘"try"…"finally"’ statement and the ‘"with"’ statement provide\n'
- 'convenient ways to do this.\n'
+ '"try"…"finally" statement and the "with" statement provide '
+ 'convenient\n'
+ 'ways to do this.\n'
'\n'
'Some objects contain references to other objects; these are '
'called\n'
@@ -8699,10 +8710,7 @@
'The try statement.\n'
'\n'
'Changed in version 3.3: "None" is now permitted as "Y" in "raise X\n'
- 'from Y".\n'
- '\n'
- 'New in version 3.3: The "__suppress_context__" attribute to '
- 'suppress\n'
+ 'from Y".Added the "__suppress_context__" attribute to suppress\n'
'automatic display of the exception context.\n'
'\n'
'Changed in version 3.11: If the traceback of the active exception '
@@ -9479,8 +9487,8 @@
'reflection,\n'
' and "__eq__()" and "__ne__()" are their own reflection. '
'If the\n'
- ' operands are of different types, and right operand’s type '
- 'is a\n'
+ ' operands are of different types, and the right operand’s '
+ 'type is a\n'
' direct or indirect subclass of the left operand’s type, '
'the\n'
' reflected method of the right operand has priority, '
@@ -9489,6 +9497,11 @@
'is not\n'
' considered.\n'
'\n'
+ ' When no appropriate method returns any value other than\n'
+ ' "NotImplemented", the "==" and "!=" operators will fall '
+ 'back to\n'
+ ' "is" and "is not", respectively.\n'
+ '\n'
'object.__hash__(self)\n'
'\n'
' Called by built-in function "hash()" and for operations '
@@ -9730,9 +9743,9 @@
'\n'
'object.__dir__(self)\n'
'\n'
- ' Called when "dir()" is called on the object. A sequence '
+ ' Called when "dir()" is called on the object. An iterable '
'must be\n'
- ' returned. "dir()" converts the returned sequence to a '
+ ' returned. "dir()" converts the returned iterable to a '
'list and\n'
' sorts it.\n'
'\n'
@@ -9759,8 +9772,8 @@
'returned.\n'
'\n'
'The "__dir__" function should accept no arguments, and '
- 'return a\n'
- 'sequence of strings that represents the names accessible on '
+ 'return an\n'
+ 'iterable of strings that represents the names accessible on '
'module. If\n'
'present, this function overrides the standard "dir()" search '
'on a\n'
@@ -11023,7 +11036,7 @@
'"__rsub__()"\n'
' method, "type(y).__rsub__(y, x)" is called if '
'"type(x).__sub__(x,\n'
- ' y)" returns *NotImplemented*.\n'
+ ' y)" returns "NotImplemented".\n'
'\n'
' Note that ternary "pow()" will not try calling '
'"__rpow__()" (the\n'
@@ -11066,14 +11079,17 @@
'the result\n'
' (which could be, but does not have to be, *self*). If a '
'specific\n'
- ' method is not defined, the augmented assignment falls '
- 'back to the\n'
- ' normal methods. For instance, if *x* is an instance of a '
- 'class\n'
- ' with an "__iadd__()" method, "x += y" is equivalent to "x '
- '=\n'
- ' x.__iadd__(y)" . Otherwise, "x.__add__(y)" and '
- '"y.__radd__(x)" are\n'
+ ' method is not defined, or if that method returns '
+ '"NotImplemented",\n'
+ ' the augmented assignment falls back to the normal '
+ 'methods. For\n'
+ ' instance, if *x* is an instance of a class with an '
+ '"__iadd__()"\n'
+ ' method, "x += y" is equivalent to "x = x.__iadd__(y)" . '
+ 'If\n'
+ ' "__iadd__()" does not exist, or if "x.__iadd__(y)" '
+ 'returns\n'
+ ' "NotImplemented", "x.__add__(y)" and "y.__radd__(x)" are\n'
' considered, as with the evaluation of "x + y". In '
'certain\n'
' situations, augmented assignment can result in unexpected '
@@ -12356,9 +12372,8 @@
'\n'
'New in version 3.3: The "\'rb\'" prefix of raw bytes literals has '
'been\n'
- 'added as a synonym of "\'br\'".\n'
- '\n'
- 'New in version 3.3: Support for the unicode legacy literal\n'
+ 'added as a synonym of "\'br\'".Support for the unicode legacy '
+ 'literal\n'
'("u\'value\'") was reintroduced to simplify the maintenance of '
'dual\n'
'Python 2.x and 3.x codebases. See **PEP 414** for more '
@@ -13065,14 +13080,18 @@
'contains\n'
'the numbers 0, 1, …, *n*-1. Item *i* of sequence *a* is selected '
'by\n'
- '"a[i]".\n'
+ '"a[i]". Some sequences, including built-in sequences, interpret\n'
+ 'negative subscripts by adding the sequence length. For example,\n'
+ '"a[-2]" equals "a[n-2]", the second to last item of sequence a '
+ 'with\n'
+ 'length "n".\n'
'\n'
'Sequences also support slicing: "a[i:j]" selects all items with '
'index\n'
'*k* such that *i* "<=" *k* "<" *j*. When used as an expression, a\n'
- 'slice is a sequence of the same type. This implies that the index '
- 'set\n'
- 'is renumbered so that it starts at 0.\n'
+ 'slice is a sequence of the same type. The comment above about '
+ 'negative\n'
+ 'indexes also applies to negative slice positions.\n'
'\n'
'Some sequences also support “extended slicing” with a third “step”\n'
'parameter: "a[i:j:k]" selects all items of *a* with index *x* where '
@@ -13809,7 +13828,9 @@
'name |\n'
'+----------------------------------------------------+----------------------------------------------------+\n'
'| codeobject.co_qualname | The fully '
- 'qualified function name |\n'
+ 'qualified function name New in version |\n'
+ '| | '
+ '3.11. |\n'
'+----------------------------------------------------+----------------------------------------------------+\n'
'| codeobject.co_argcount | The total '
'number of positional *parameters* |\n'
@@ -14025,6 +14046,14 @@
'tools.\n'
' The PEP that introduced the "co_lines()" method.\n'
'\n'
+ 'codeobject.replace(**kwargs)\n'
+ '\n'
+ ' Return a copy of the code object with new values for the '
+ 'specified\n'
+ ' fields.\n'
+ '\n'
+ ' New in version 3.8.\n'
+ '\n'
'\n'
'Frame objects\n'
'-------------\n'
@@ -15570,9 +15599,8 @@
'objects\n'
'based on the sequence of values they define (instead of '
'comparing\n'
- 'based on object identity).\n'
- '\n'
- 'New in version 3.3: The "start", "stop" and "step" attributes.\n'
+ 'based on object identity).Added the "start", "stop" and "step"\n'
+ 'attributes.\n'
'\n'
'See also:\n'
'\n'
diff --git a/Misc/NEWS.d/3.11.9.rst b/Misc/NEWS.d/3.11.9.rst
new file mode 100644
index 00000000000000..93c45ab86b0730
--- /dev/null
+++ b/Misc/NEWS.d/3.11.9.rst
@@ -0,0 +1,902 @@
+.. date: 2024-02-18-03-14-40
+.. gh-issue: 115398
+.. nonce: tzvxH8
+.. release date: 2024-04-02
+.. section: Security
+
+Allow controlling Expat >=2.6.0 reparse deferral (CVE-2023-52425) by adding
+five new methods:
+
+* :meth:`xml.etree.ElementTree.XMLParser.flush`
+* :meth:`xml.etree.ElementTree.XMLPullParser.flush`
+* :meth:`xml.parsers.expat.xmlparser.GetReparseDeferralEnabled`
+* :meth:`xml.parsers.expat.xmlparser.SetReparseDeferralEnabled`
+* :meth:`xml.sax.expatreader.ExpatParser.flush`
+
+..
+
+.. date: 2024-02-13-15-14-39
+.. gh-issue: 115399
+.. nonce: xT-scP
+.. section: Security
+
+Update bundled libexpat to 2.6.0
+
+..
+
+.. date: 2024-02-12-00-33-01
+.. gh-issue: 115243
+.. nonce: e1oGX8
+.. section: Security
+
+Fix possible crashes in :meth:`collections.deque.index` when the deque is
+concurrently modified.
+
+..
+
+.. date: 2024-01-26-22-14-09
+.. gh-issue: 114572
+.. nonce: t1QMQD
+.. section: Security
+
+:meth:`ssl.SSLContext.cert_store_stats` and
+:meth:`ssl.SSLContext.get_ca_certs` now correctly lock access to the
+certificate store, when the :class:`ssl.SSLContext` is shared across
+multiple threads.
+
+..
+
+.. date: 2024-03-04-10-19-51
+.. gh-issue: 116296
+.. nonce: gvtxyU
+.. section: Core and Builtins
+
+Fix possible refleak in :meth:`!object.__reduce__` internal error handling.
+
+..
+
+.. date: 2024-02-28-17-25-19
+.. gh-issue: 116034
+.. nonce: -Uu9tf
+.. section: Core and Builtins
+
+Fix location of the error on a failed assertion.
+
+..
+
+.. date: 2024-02-22-16-17-53
+.. gh-issue: 115823
+.. nonce: c1TreJ
+.. section: Core and Builtins
+
+Properly calculate error ranges in the parser when raising
+:exc:`SyntaxError` exceptions caused by invalid byte sequences. Patch by
+Pablo Galindo
+
+..
+
+.. date: 2024-02-14-23-50-55
+.. gh-issue: 112087
+.. nonce: H_4W_v
+.. section: Core and Builtins
+
+For an empty reverse iterator for list will be reduced to :func:`reversed`.
+Patch by Donghee Na.
+
+..
+
+.. date: 2024-02-05-12-40-26
+.. gh-issue: 115011
+.. nonce: L1AKF5
+.. section: Core and Builtins
+
+Setters for members with an unsigned integer type now support the same range
+of valid values for objects that has a :meth:`~object.__index__` method as
+for :class:`int`.
+
+..
+
+.. date: 2022-09-04-16-51-56
+.. gh-issue: 96497
+.. nonce: HTBuIL
+.. section: Core and Builtins
+
+Fix incorrect resolution of mangled class variables used in assignment
+expressions in comprehensions.
+
+..
+
+.. date: 2024-03-27-21-05-52
+.. gh-issue: 117310
+.. nonce: Bt2wox
+.. section: Library
+
+Fixed an unlikely early & extra ``Py_DECREF`` triggered crash in :mod:`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.
+
+..
+
+.. date: 2024-03-23-14-26-18
+.. gh-issue: 117178
+.. nonce: vTisTG
+.. section: Library
+
+Fix regression in lazy loading of self-referential modules, introduced in
+gh-114781.
+
+..
+
+.. date: 2024-03-21-17-07-38
+.. gh-issue: 117084
+.. nonce: w1mTpT
+.. section: Library
+
+Fix :mod:`zipfile` extraction for directory entries with the name containing
+backslashes on Windows.
+
+..
+
+.. date: 2024-03-21-07-27-36
+.. gh-issue: 117110
+.. nonce: 9K1InX
+.. section: Library
+
+Fix a bug that prevents subclasses of :class:`typing.Any` to be instantiated
+with arguments. Patch by Chris Fu.
+
+..
+
+.. date: 2024-03-19-11-08-26
+.. gh-issue: 90872
+.. nonce: ghys95
+.. section: Library
+
+On Windows, :meth:`subprocess.Popen.wait` no longer calls
+``WaitForSingleObject()`` with a negative timeout: pass ``0`` ms if the
+timeout is negative. Patch by Victor Stinner.
+
+..
+
+.. date: 2024-03-18-14-36-50
+.. gh-issue: 116957
+.. nonce: dTCs4f
+.. section: Library
+
+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.
+
+..
+
+.. date: 2024-03-14-20-59-28
+.. gh-issue: 90095
+.. nonce: 7UaJ1U
+.. section: Library
+
+Ignore empty lines and comments in ``.pdbrc``
+
+..
+
+.. date: 2024-03-14-14-01-46
+.. gh-issue: 116764
+.. nonce: moB3Lc
+.. section: Library
+
+Restore support of ``None`` and other false values in :mod:`urllib.parse`
+functions :func:`~urllib.parse.parse_qs` and
+:func:`~urllib.parse.parse_qsl`. Also, they now raise a TypeError for
+non-zero integers and non-empty sequences.
+
+..
+
+.. date: 2024-03-14-10-01-23
+.. gh-issue: 116811
+.. nonce: _h5iKP
+.. section: Library
+
+In ``PathFinder.invalidate_caches``, delegate to
+``MetadataPathFinder.invalidate_caches``.
+
+..
+
+.. date: 2024-03-11-12-11-10
+.. gh-issue: 116600
+.. nonce: FcNBy_
+.. section: Library
+
+Fix :func:`repr` for global :class:`~enum.Flag` members.
+
+..
+
+.. date: 2024-03-08-11-31-49
+.. gh-issue: 116484
+.. nonce: VMAsU7
+.. section: Library
+
+Change automatically generated :class:`tkinter.Checkbutton` widget names to
+avoid collisions with automatically generated
+:class:`tkinter.ttk.Checkbutton` widget names within the same parent widget.
+
+..
+
+.. date: 2024-03-06-18-30-37
+.. gh-issue: 116401
+.. nonce: 3Wcda2
+.. section: Library
+
+Fix blocking :func:`os.fwalk` and :func:`shutil.rmtree` on opening named
+pipe.
+
+..
+
+.. date: 2024-03-05-20-53-34
+.. gh-issue: 116143
+.. nonce: sww6Zl
+.. section: Library
+
+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.
+
+..
+
+.. date: 2024-03-05-02-09-18
+.. gh-issue: 116325
+.. nonce: FmlBYv
+.. section: Library
+
+:mod:`typing`: raise :exc:`SyntaxError` instead of :exc:`AttributeError` on
+forward references as empty strings.
+
+..
+
+.. date: 2024-03-01-20-23-57
+.. gh-issue: 90535
+.. nonce: wXm-jC
+.. section: Library
+
+Fix support of *interval* values > 1 in
+:class:`logging.TimedRotatingFileHandler` for ``when='MIDNIGHT'`` and
+``when='Wx'``.
+
+..
+
+.. date: 2024-03-01-14-22-08
+.. gh-issue: 115978
+.. nonce: r2ePTo
+.. section: Library
+
+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).
+
+..
+
+.. date: 2024-03-01-11-57-32
+.. gh-issue: 88352
+.. nonce: bZ68rw
+.. section: Library
+
+Fix the computation of the next rollover time in the
+:class:`logging.TimedRotatingFileHandler` handler. :meth:`!computeRollover`
+now always returns a timestamp larger than the specified time and works
+correctly during the DST change. :meth:`!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.
+
+..
+
+.. date: 2024-02-29-20-06-06
+.. gh-issue: 87115
+.. nonce: FVMiOR
+.. section: Library
+
+Set ``__main__.__spec__`` to ``None`` when running a script with :mod:`pdb`
+
+..
+
+.. date: 2024-02-29-17-06-54
+.. gh-issue: 76511
+.. nonce: WqjRLP
+.. section: Library
+
+Fix UnicodeEncodeError in :meth:`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.
+
+..
+
+.. date: 2024-02-27-13-05-51
+.. gh-issue: 75988
+.. nonce: In6LlB
+.. section: Library
+
+Fixed :func:`unittest.mock.create_autospec` to pass the call through to the
+wrapped object to return the real result.
+
+..
+
+.. date: 2024-02-25-19-20-05
+.. gh-issue: 115881
+.. nonce: ro_Kuw
+.. section: Library
+
+Fix issue where :func:`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.
+
+..
+
+.. date: 2024-02-24-18-48-14
+.. gh-issue: 115886
+.. nonce: rgM6AF
+.. section: Library
+
+Fix silent truncation of the name with an embedded null character in
+:class:`multiprocessing.shared_memory.SharedMemory`.
+
+..
+
+.. date: 2024-02-22-11-29-27
+.. gh-issue: 115809
+.. nonce: 9H1DhB
+.. section: Library
+
+Improve algorithm for computing which rolled-over log files to delete in
+:class:`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.
+
+..
+
+.. date: 2024-02-21-17-54-59
+.. gh-issue: 74668
+.. nonce: JT-Q8W
+.. section: Library
+
+:mod:`urllib.parse` functions :func:`~urllib.parse.parse_qs` and
+:func:`~urllib.parse.parse_qsl` now support bytes arguments containing raw
+and percent-encoded non-ASCII data.
+
+..
+
+.. date: 2024-02-20-22-02-34
+.. gh-issue: 67044
+.. nonce: QF9_Ru
+.. section: Library
+
+:func:`csv.writer` now always quotes or escapes ``'\r'`` and ``'\n'``,
+regardless of *lineterminator* value.
+
+..
+
+.. date: 2024-02-20-16-42-54
+.. gh-issue: 115712
+.. nonce: EXVMXw
+.. section: Library
+
+:func:`csv.writer()` now quotes empty fields if delimiter is a space and
+skipinitialspace is true and raises exception if quoting is not possible.
+
+..
+
+.. date: 2024-02-17-18-47-12
+.. gh-issue: 115618
+.. nonce: napiNp
+.. section: Library
+
+Fix improper decreasing the reference count for ``None`` argument in
+:class:`property` methods :meth:`~property.getter`, :meth:`~property.setter`
+and :meth:`~property.deleter`.
+
+..
+
+.. date: 2024-02-16-10-18-25
+.. gh-issue: 115570
+.. nonce: bI6uu3
+.. section: Library
+
+A :exc:`DeprecationWarning` is no longer omitted on access to the
+``__doc__`` attributes of the deprecated ``typing.io`` and ``typing.re``
+pseudo-modules.
+
+..
+
+.. date: 2024-02-15-23-42-54
+.. gh-issue: 112006
+.. nonce: 4wxcK-
+.. section: Library
+
+Fix :func:`inspect.unwrap` for types with the ``__wrapper__`` data
+descriptor.
+
+..
+
+.. date: 2024-02-15-19-11-49
+.. gh-issue: 101293
+.. nonce: 898b8l
+.. section: Library
+
+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 :meth:`inspect.Signature.from_callable`.
+
+..
+
+.. date: 2024-02-13-18-27-03
+.. gh-issue: 115392
+.. nonce: gle5tp
+.. section: Library
+
+Fix a bug in :mod:`doctest` where incorrect line numbers would be reported
+for decorated functions.
+
+..
+
+.. date: 2024-02-11-20-23-36
+.. gh-issue: 114563
+.. nonce: RzxNYT
+.. section: Library
+
+Fix several :func:`format()` bugs when using the C implementation of
+:class:`~decimal.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)
+
+..
+
+.. date: 2024-02-09-19-41-48
+.. gh-issue: 115197
+.. nonce: 20wkWH
+.. section: Library
+
+``urllib.request`` no longer resolves the hostname before checking it
+against the system's proxy bypass list on macOS and Windows.
+
+..
+
+.. date: 2024-02-09-17-56-06
+.. gh-issue: 115198
+.. nonce: QKrxUQ
+.. section: Library
+
+Fix support of Docutils >= 0.19 in :mod:`distutils`.
+
+..
+
+.. date: 2024-02-09-07-20-16
+.. gh-issue: 115165
+.. nonce: yfJLXA
+.. section: Library
+
+Most exceptions are now ignored when attempting to set the
+``__orig_class__`` attribute on objects returned when calling :mod:`typing`
+generic aliases (including generic aliases created using
+:data:`typing.Annotated`). Previously only :exc:`AttributeError` was
+ignored. Patch by Dave Shawley.
+
+..
+
+.. date: 2024-02-08-14-21-28
+.. gh-issue: 115133
+.. nonce: ycl4ko
+.. section: Library
+
+Fix tests for :class:`~xml.etree.ElementTree.XMLPullParser` with Expat
+2.6.0.
+
+..
+
+.. date: 2024-02-08-13-26-14
+.. gh-issue: 115059
+.. nonce: DqP9dr
+.. section: Library
+
+:meth:`io.BufferedRandom.read1` now flushes the underlying write buffer.
+
+..
+
+.. date: 2024-02-07-12-37-52
+.. gh-issue: 79382
+.. nonce: Yz_5WB
+.. section: Library
+
+Trailing ``**`` no longer allows to match files and non-existing paths in
+recursive :func:`~glob.glob`.
+
+..
+
+.. date: 2024-01-30-23-28-29
+.. gh-issue: 114763
+.. nonce: BRjKkg
+.. section: Library
+
+Protect modules loaded with :class:`importlib.util.LazyLoader` from race
+conditions when multiple threads try to access attributes before the loading
+is complete.
+
+..
+
+.. date: 2024-01-11-15-10-53
+.. gh-issue: 97959
+.. nonce: UOj6d4
+.. section: Library
+
+Fix rendering class methods, bound methods, method and function aliases in
+:mod:`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.
+
+..
+
+.. date: 2023-11-20-16-15-44
+.. gh-issue: 112281
+.. nonce: gH4EVk
+.. section: Library
+
+Allow creating :ref:`union of types<types-union>` for
+:class:`typing.Annotated` with unhashable metadata.
+
+..
+
+.. date: 2023-11-07-10-22-06
+.. gh-issue: 111775
+.. nonce: IoVxfX
+.. section: Library
+
+Fix :meth:`importlib.resources.simple.ResourceHandle.open` for text mode,
+added missed ``stream`` argument.
+
+..
+
+.. date: 2023-10-07-06-15-13
+.. gh-issue: 90095
+.. nonce: gWn1ka
+.. section: Library
+
+Make .pdbrc and -c work with any valid pdb commands.
+
+..
+
+.. date: 2023-08-02-01-17-32
+.. gh-issue: 107155
+.. nonce: Mj1K9L
+.. section: Library
+
+Fix incorrect output of ``help(x)`` where ``x`` is a :keyword:`lambda`
+function, which has an ``__annotations__`` dictionary attribute with a
+``"return"`` key.
+
+..
+
+.. date: 2023-06-16-19-17-06
+.. gh-issue: 105866
+.. nonce: 0NBveV
+.. section: Library
+
+Fixed ``_get_slots`` bug which caused error when defining dataclasses with
+slots and a weakref_slot.
+
+..
+
+.. date: 2023-04-02-21-20-35
+.. gh-issue: 60346
+.. nonce: 7mjgua
+.. section: Library
+
+Fix ArgumentParser inconsistent with parse_known_args.
+
+..
+
+.. date: 2023-01-12-14-16-01
+.. gh-issue: 100985
+.. nonce: GT5Fvd
+.. section: Library
+
+Update HTTPSConnection to consistently wrap IPv6 Addresses when using a
+proxy.
+
+..
+
+.. date: 2023-01-09-14-08-02
+.. gh-issue: 100884
+.. nonce: DcmdLl
+.. section: Library
+
+email: fix misfolding of comma in address-lists over multiple lines in
+combination with unicode encoding.
+
+..
+
+.. date: 2022-11-22-23-17-43
+.. gh-issue: 95782
+.. nonce: an_and
+.. section: Library
+
+Fix :func:`io.BufferedReader.tell`, :func:`io.BufferedReader.seek`,
+:func:`_pyio.BufferedReader.tell`, :func:`io.BufferedRandom.tell`,
+:func:`io.BufferedRandom.seek` and :func:`_pyio.BufferedRandom.tell` being
+able to return negative offsets.
+
+..
+
+.. date: 2022-08-26-15-50-53
+.. gh-issue: 96310
+.. nonce: 0NssDh
+.. section: Library
+
+Fix a traceback in :mod:`argparse` when all options in a mutually exclusive
+group are suppressed.
+
+..
+
+.. date: 2022-05-25-17-49-04
+.. gh-issue: 93205
+.. nonce: DjhFVR
+.. section: Library
+
+Fixed a bug in :class:`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
+.. date: 2021-08-24-20-47-37
+.. nonce: c3BhZS
+.. section: Library
+
+Add missing call to localization function in :mod:`argparse`.
+
+..
+
+.. bpo: 43952
+.. date: 2021-05-03-11-04-12
+.. nonce: Me7fJe
+.. section: Library
+
+Fix :meth:`multiprocessing.connection.Listener.accept()` to accept empty
+bytes as authkey. Not accepting empty bytes as key causes it to hang
+indefinitely.
+
+..
+
+.. bpo: 42125
+.. date: 2020-12-15-22-30-49
+.. nonce: UGyseY
+.. section: Library
+
+linecache: get module name from ``__spec__`` if available. This allows
+getting source code for the ``__main__`` module when a custom loader is
+used.
+
+..
+
+.. date: 2019-08-27-01-03-26
+.. gh-issue: 66543
+.. nonce: _TRpYr
+.. section: Library
+
+Make :func:`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
+.. date: 2019-04-06-23-50-59
+.. nonce: 0yhMDc
+.. section: Library
+
+Add 'default' and 'version' help text for localization in argparse.
+
+..
+
+.. date: 2024-02-14-20-17-04
+.. gh-issue: 115399
+.. nonce: fb9a0R
+.. section: Documentation
+
+Document CVE-2023-52425 of Expat <2.6.0 under "XML vulnerabilities".
+
+..
+
+.. date: 2024-02-12-12-26-17
+.. gh-issue: 115233
+.. nonce: aug6r9
+.. section: Documentation
+
+Fix an example for :class:`~logging.LoggerAdapter` in the Logging Cookbook.
+
+..
+
+.. date: 2024-03-25-21-31-49
+.. gh-issue: 83434
+.. nonce: U7Z8cY
+.. section: Tests
+
+Disable JUnit XML output (``--junit-xml=FILE`` command line option) in
+regrtest when hunting for reference leaks (``-R`` option). Patch by Victor
+Stinner.
+
+..
+
+.. date: 2024-03-24-23-49-25
+.. gh-issue: 117187
+.. nonce: eMLT5n
+.. section: Tests
+
+Fix XML tests for vanilla Expat <2.6.0.
+
+..
+
+.. date: 2024-03-13-12-06-49
+.. gh-issue: 115979
+.. nonce: zsNpQD
+.. section: Tests
+
+Update test_importlib so that it passes under WASI SDK 21.
+
+..
+
+.. date: 2024-03-06-11-00-36
+.. gh-issue: 116307
+.. nonce: Uij0t_
+.. section: Tests
+
+Added import helper ``isolated_modules`` as ``CleanImport`` does not remove
+modules imported during the context.
+
+..
+
+.. date: 2024-02-20-15-47-41
+.. gh-issue: 115720
+.. nonce: w8i8UG
+.. section: Tests
+
+Leak tests (``-R``, ``--huntrleaks``) now show a summary of the number of
+leaks found in each iteration.
+
+..
+
+.. date: 2024-02-18-14-20-52
+.. gh-issue: 115122
+.. nonce: 3rGNo9
+.. section: Tests
+
+Add ``--bisect`` option to regrtest test runner: run failed tests with
+``test.bisect_cmd`` to identify failing tests. Patch by Victor Stinner.
+
+..
+
+.. date: 2024-02-17-08-25-01
+.. gh-issue: 115596
+.. nonce: RGPCrR
+.. section: Tests
+
+Fix ``ProgramPriorityTests`` in ``test_os`` permanently changing the process
+priority.
+
+..
+
+.. date: 2024-02-09-10-59-17
+.. gh-issue: 115198
+.. nonce: 1JP6LG
+.. section: Tests
+
+Fix test_check_metadata_deprecate in distutils tests with a newer Docutils.
+
+..
+
+.. date: 2024-03-04-12-43-42
+.. gh-issue: 116313
+.. nonce: cLLb8S
+.. section: Build
+
+Get WASI builds to work under wasmtime 18 w/ WASI 0.2/preview2 primitives.
+
+..
+
+.. date: 2024-02-08-19-36-20
+.. gh-issue: 115167
+.. nonce: LB9nDK
+.. section: Build
+
+Avoid vendoring ``vcruntime140_threads.dll`` when building with Visual
+Studio 2022 version 17.8.
+
+..
+
+.. date: 2024-03-14-01-58-22
+.. gh-issue: 116773
+.. nonce: H2UldY
+.. section: Windows
+
+Fix instances of ``<_overlapped.Overlapped object at 0xXXX> still has
+pending operation at deallocation, the process may crash``.
+
+..
+
+.. date: 2024-02-24-23-03-43
+.. gh-issue: 91227
+.. nonce: sL4zWC
+.. section: Windows
+
+Fix the asyncio ProactorEventLoop implementation so that sending a datagram
+to an address that is not listening does not prevent receiving any more
+datagrams.
+
+..
+
+.. date: 2024-02-21-23-48-59
+.. gh-issue: 115554
+.. nonce: 02mpQC
+.. section: Windows
+
+The installer now has more strict rules about updating the :ref:`launcher`.
+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.
+
+..
+
+.. date: 2024-02-15-23-16-31
+.. gh-issue: 115543
+.. nonce: otrWnw
+.. section: Windows
+
+:ref:`launcher` can now detect Python 3.13 when installed from the Microsoft
+Store, and will install Python 3.12 by default when
+:envvar:`PYLAUNCHER_ALLOW_INSTALL` is set.
+
+..
+
+.. date: 2024-02-06-09-05-13
+.. gh-issue: 115009
+.. nonce: ShMjZs
+.. section: Windows
+
+Update Windows installer to use SQLite 3.45.1.
+
+..
+
+.. date: 2023-12-09-11-04-26
+.. gh-issue: 88516
+.. nonce: SIIvfs
+.. section: IDLE
+
+On macOS show a proxy icon in the title bar of editor windows to match
+platform behaviour.
+
+..
+
+.. date: 2024-02-14-15-58-13
+.. gh-issue: 113516
+.. nonce: TyIHWx
+.. section: Tools/Demos
+
+Don't set ``LDSHARED`` when building for WASI.
+
+..
+
+.. date: 2024-03-20-13-13-22
+.. gh-issue: 117021
+.. nonce: 0Q5jBx
+.. section: C API
+
+Fix integer overflow in :c:func:`PyLong_AsPid` on non-Windows 64-bit
+platforms.
diff --git a/Misc/NEWS.d/next/Build/2024-02-08-19-36-20.gh-issue-115167.LB9nDK.rst b/Misc/NEWS.d/next/Build/2024-02-08-19-36-20.gh-issue-115167.LB9nDK.rst
deleted file mode 100644
index c60c4a93fe8906..00000000000000
--- a/Misc/NEWS.d/next/Build/2024-02-08-19-36-20.gh-issue-115167.LB9nDK.rst
+++ /dev/null
@@ -1 +0,0 @@
-Avoid vendoring ``vcruntime140_threads.dll`` when building with Visual Studio 2022 version 17.8.
diff --git a/Misc/NEWS.d/next/Build/2024-03-04-12-43-42.gh-issue-116313.cLLb8S.rst b/Misc/NEWS.d/next/Build/2024-03-04-12-43-42.gh-issue-116313.cLLb8S.rst
deleted file mode 100644
index 61501549060024..00000000000000
--- a/Misc/NEWS.d/next/Build/2024-03-04-12-43-42.gh-issue-116313.cLLb8S.rst
+++ /dev/null
@@ -1 +0,0 @@
-Get WASI builds to work under wasmtime 18 w/ WASI 0.2/preview2 primitives.
diff --git a/Misc/NEWS.d/next/C API/2024-03-20-13-13-22.gh-issue-117021.0Q5jBx.rst b/Misc/NEWS.d/next/C API/2024-03-20-13-13-22.gh-issue-117021.0Q5jBx.rst
deleted file mode 100644
index 2f93e1e6da00aa..00000000000000
--- a/Misc/NEWS.d/next/C API/2024-03-20-13-13-22.gh-issue-117021.0Q5jBx.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-Fix integer overflow in :c:func:`PyLong_AsPid` on non-Windows 64-bit
-platforms.
diff --git a/Misc/NEWS.d/next/Core and Builtins/2022-09-04-16-51-56.gh-issue-96497.HTBuIL.rst b/Misc/NEWS.d/next/Core and Builtins/2022-09-04-16-51-56.gh-issue-96497.HTBuIL.rst
deleted file mode 100644
index 6881dde2e6cf44..00000000000000
--- a/Misc/NEWS.d/next/Core and Builtins/2022-09-04-16-51-56.gh-issue-96497.HTBuIL.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-Fix incorrect resolution of mangled class variables used in assignment
-expressions in comprehensions.
diff --git a/Misc/NEWS.d/next/Core and Builtins/2024-02-05-12-40-26.gh-issue-115011.L1AKF5.rst b/Misc/NEWS.d/next/Core and Builtins/2024-02-05-12-40-26.gh-issue-115011.L1AKF5.rst
deleted file mode 100644
index cf91a4f818bd44..00000000000000
--- a/Misc/NEWS.d/next/Core and Builtins/2024-02-05-12-40-26.gh-issue-115011.L1AKF5.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-Setters for members with an unsigned integer type now support the same range
-of valid values for objects that has a :meth:`~object.__index__` method as
-for :class:`int`.
diff --git a/Misc/NEWS.d/next/Core and Builtins/2024-02-14-23-50-55.gh-issue-112087.H_4W_v.rst b/Misc/NEWS.d/next/Core and Builtins/2024-02-14-23-50-55.gh-issue-112087.H_4W_v.rst
deleted file mode 100644
index 05c135347d6a17..00000000000000
--- a/Misc/NEWS.d/next/Core and Builtins/2024-02-14-23-50-55.gh-issue-112087.H_4W_v.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-For an empty reverse iterator for list will be reduced to :func:`reversed`.
-Patch by Donghee Na.
diff --git a/Misc/NEWS.d/next/Core and Builtins/2024-02-22-16-17-53.gh-issue-115823.c1TreJ.rst b/Misc/NEWS.d/next/Core and Builtins/2024-02-22-16-17-53.gh-issue-115823.c1TreJ.rst
deleted file mode 100644
index 8cda4c9343d4d7..00000000000000
--- a/Misc/NEWS.d/next/Core and Builtins/2024-02-22-16-17-53.gh-issue-115823.c1TreJ.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-Properly calculate error ranges in the parser when raising
-:exc:`SyntaxError` exceptions caused by invalid byte sequences. Patch by
-Pablo Galindo
diff --git a/Misc/NEWS.d/next/Core and Builtins/2024-02-28-17-25-19.gh-issue-116034.-Uu9tf.rst b/Misc/NEWS.d/next/Core and Builtins/2024-02-28-17-25-19.gh-issue-116034.-Uu9tf.rst
deleted file mode 100644
index c711b63605d1a1..00000000000000
--- a/Misc/NEWS.d/next/Core and Builtins/2024-02-28-17-25-19.gh-issue-116034.-Uu9tf.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix location of the error on a failed assertion.
diff --git a/Misc/NEWS.d/next/Core and Builtins/2024-03-04-10-19-51.gh-issue-116296.gvtxyU.rst b/Misc/NEWS.d/next/Core and Builtins/2024-03-04-10-19-51.gh-issue-116296.gvtxyU.rst
deleted file mode 100644
index 0781e9282205d1..00000000000000
--- a/Misc/NEWS.d/next/Core and Builtins/2024-03-04-10-19-51.gh-issue-116296.gvtxyU.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix possible refleak in :meth:`!object.__reduce__` internal error handling.
diff --git a/Misc/NEWS.d/next/Documentation/2024-02-12-12-26-17.gh-issue-115233.aug6r9.rst b/Misc/NEWS.d/next/Documentation/2024-02-12-12-26-17.gh-issue-115233.aug6r9.rst
deleted file mode 100644
index f37f94d12d4cf1..00000000000000
--- a/Misc/NEWS.d/next/Documentation/2024-02-12-12-26-17.gh-issue-115233.aug6r9.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix an example for :class:`~logging.LoggerAdapter` in the Logging Cookbook.
diff --git a/Misc/NEWS.d/next/Documentation/2024-02-14-20-17-04.gh-issue-115399.fb9a0R.rst b/Misc/NEWS.d/next/Documentation/2024-02-14-20-17-04.gh-issue-115399.fb9a0R.rst
deleted file mode 100644
index 587aea802168bd..00000000000000
--- a/Misc/NEWS.d/next/Documentation/2024-02-14-20-17-04.gh-issue-115399.fb9a0R.rst
+++ /dev/null
@@ -1 +0,0 @@
-Document CVE-2023-52425 of Expat <2.6.0 under "XML vulnerabilities".
diff --git a/Misc/NEWS.d/next/IDLE/2023-12-09-11-04-26.gh-issue-88516.SIIvfs.rst b/Misc/NEWS.d/next/IDLE/2023-12-09-11-04-26.gh-issue-88516.SIIvfs.rst
deleted file mode 100644
index b6dea5029bf353..00000000000000
--- a/Misc/NEWS.d/next/IDLE/2023-12-09-11-04-26.gh-issue-88516.SIIvfs.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-On macOS show a proxy icon in the title bar of editor windows to match
-platform behaviour.
diff --git a/Misc/NEWS.d/next/Library/2019-04-06-23-50-59.bpo-33775.0yhMDc.rst b/Misc/NEWS.d/next/Library/2019-04-06-23-50-59.bpo-33775.0yhMDc.rst
deleted file mode 100644
index 2a663ac7940dcb..00000000000000
--- a/Misc/NEWS.d/next/Library/2019-04-06-23-50-59.bpo-33775.0yhMDc.rst
+++ /dev/null
@@ -1 +0,0 @@
-Add 'default' and 'version' help text for localization in argparse.
diff --git a/Misc/NEWS.d/next/Library/2019-08-27-01-03-26.gh-issue-66543._TRpYr.rst b/Misc/NEWS.d/next/Library/2019-08-27-01-03-26.gh-issue-66543._TRpYr.rst
deleted file mode 100644
index 62f7aa2490bb73..00000000000000
--- a/Misc/NEWS.d/next/Library/2019-08-27-01-03-26.gh-issue-66543._TRpYr.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-Make :func:`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.
diff --git a/Misc/NEWS.d/next/Library/2020-12-15-22-30-49.bpo-42125.UGyseY.rst b/Misc/NEWS.d/next/Library/2020-12-15-22-30-49.bpo-42125.UGyseY.rst
deleted file mode 100644
index 49d4462e257702..00000000000000
--- a/Misc/NEWS.d/next/Library/2020-12-15-22-30-49.bpo-42125.UGyseY.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-linecache: get module name from ``__spec__`` if available. This allows getting
-source code for the ``__main__`` module when a custom loader is used.
diff --git a/Misc/NEWS.d/next/Library/2021-05-03-11-04-12.bpo-43952.Me7fJe.rst b/Misc/NEWS.d/next/Library/2021-05-03-11-04-12.bpo-43952.Me7fJe.rst
deleted file mode 100644
index e164619e44a301..00000000000000
--- a/Misc/NEWS.d/next/Library/2021-05-03-11-04-12.bpo-43952.Me7fJe.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-Fix :meth:`multiprocessing.connection.Listener.accept()` to accept empty bytes
-as authkey. Not accepting empty bytes as key causes it to hang indefinitely.
diff --git a/Misc/NEWS.d/next/Library/2021-08-24-20-47-37.bpo-44865.c3BhZS.rst b/Misc/NEWS.d/next/Library/2021-08-24-20-47-37.bpo-44865.c3BhZS.rst
deleted file mode 100644
index ecdb26cdd6edd6..00000000000000
--- a/Misc/NEWS.d/next/Library/2021-08-24-20-47-37.bpo-44865.c3BhZS.rst
+++ /dev/null
@@ -1 +0,0 @@
-Add missing call to localization function in :mod:`argparse`.
diff --git a/Misc/NEWS.d/next/Library/2022-05-25-17-49-04.gh-issue-93205.DjhFVR.rst b/Misc/NEWS.d/next/Library/2022-05-25-17-49-04.gh-issue-93205.DjhFVR.rst
deleted file mode 100644
index 4a280b93d93347..00000000000000
--- a/Misc/NEWS.d/next/Library/2022-05-25-17-49-04.gh-issue-93205.DjhFVR.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fixed a bug in :class:`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.
diff --git a/Misc/NEWS.d/next/Library/2022-08-26-15-50-53.gh-issue-96310.0NssDh.rst b/Misc/NEWS.d/next/Library/2022-08-26-15-50-53.gh-issue-96310.0NssDh.rst
deleted file mode 100644
index f8efb0002e104a..00000000000000
--- a/Misc/NEWS.d/next/Library/2022-08-26-15-50-53.gh-issue-96310.0NssDh.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-Fix a traceback in :mod:`argparse` when all options in a mutually exclusive
-group are suppressed.
diff --git a/Misc/NEWS.d/next/Library/2022-11-22-23-17-43.gh-issue-95782.an_and.rst b/Misc/NEWS.d/next/Library/2022-11-22-23-17-43.gh-issue-95782.an_and.rst
deleted file mode 100644
index 123c3944aa3a3a..00000000000000
--- a/Misc/NEWS.d/next/Library/2022-11-22-23-17-43.gh-issue-95782.an_and.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-Fix :func:`io.BufferedReader.tell`, :func:`io.BufferedReader.seek`,
-:func:`_pyio.BufferedReader.tell`, :func:`io.BufferedRandom.tell`,
-:func:`io.BufferedRandom.seek` and :func:`_pyio.BufferedRandom.tell`
-being able to return negative offsets.
diff --git a/Misc/NEWS.d/next/Library/2023-01-09-14-08-02.gh-issue-100884.DcmdLl.rst b/Misc/NEWS.d/next/Library/2023-01-09-14-08-02.gh-issue-100884.DcmdLl.rst
deleted file mode 100644
index 2a388178810835..00000000000000
--- a/Misc/NEWS.d/next/Library/2023-01-09-14-08-02.gh-issue-100884.DcmdLl.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-email: fix misfolding of comma in address-lists over multiple lines in
-combination with unicode encoding.
diff --git a/Misc/NEWS.d/next/Library/2023-01-12-14-16-01.gh-issue-100985.GT5Fvd.rst b/Misc/NEWS.d/next/Library/2023-01-12-14-16-01.gh-issue-100985.GT5Fvd.rst
deleted file mode 100644
index 8d8693a5edb3d4..00000000000000
--- a/Misc/NEWS.d/next/Library/2023-01-12-14-16-01.gh-issue-100985.GT5Fvd.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-Update HTTPSConnection to consistently wrap IPv6 Addresses when using a
-proxy.
diff --git a/Misc/NEWS.d/next/Library/2023-04-02-21-20-35.gh-issue-60346.7mjgua.rst b/Misc/NEWS.d/next/Library/2023-04-02-21-20-35.gh-issue-60346.7mjgua.rst
deleted file mode 100644
index c15bd6ed11d17f..00000000000000
--- a/Misc/NEWS.d/next/Library/2023-04-02-21-20-35.gh-issue-60346.7mjgua.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix ArgumentParser inconsistent with parse_known_args.
diff --git a/Misc/NEWS.d/next/Library/2023-06-16-19-17-06.gh-issue-105866.0NBveV.rst b/Misc/NEWS.d/next/Library/2023-06-16-19-17-06.gh-issue-105866.0NBveV.rst
deleted file mode 100644
index 28eae1232742f7..00000000000000
--- a/Misc/NEWS.d/next/Library/2023-06-16-19-17-06.gh-issue-105866.0NBveV.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fixed ``_get_slots`` bug which caused error when defining dataclasses with slots and a weakref_slot.
diff --git a/Misc/NEWS.d/next/Library/2023-08-02-01-17-32.gh-issue-107155.Mj1K9L.rst b/Misc/NEWS.d/next/Library/2023-08-02-01-17-32.gh-issue-107155.Mj1K9L.rst
deleted file mode 100644
index 8362dc0fcfaa74..00000000000000
--- a/Misc/NEWS.d/next/Library/2023-08-02-01-17-32.gh-issue-107155.Mj1K9L.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-Fix incorrect output of ``help(x)`` where ``x`` is a :keyword:`lambda`
-function, which has an ``__annotations__`` dictionary attribute with a
-``"return"`` key.
diff --git a/Misc/NEWS.d/next/Library/2023-10-07-06-15-13.gh-issue-90095.gWn1ka.rst b/Misc/NEWS.d/next/Library/2023-10-07-06-15-13.gh-issue-90095.gWn1ka.rst
deleted file mode 100644
index d71442ef642b6a..00000000000000
--- a/Misc/NEWS.d/next/Library/2023-10-07-06-15-13.gh-issue-90095.gWn1ka.rst
+++ /dev/null
@@ -1 +0,0 @@
-Make .pdbrc and -c work with any valid pdb commands.
diff --git a/Misc/NEWS.d/next/Library/2023-11-07-10-22-06.gh-issue-111775.IoVxfX.rst b/Misc/NEWS.d/next/Library/2023-11-07-10-22-06.gh-issue-111775.IoVxfX.rst
deleted file mode 100644
index 2a3bdd640ea67d..00000000000000
--- a/Misc/NEWS.d/next/Library/2023-11-07-10-22-06.gh-issue-111775.IoVxfX.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-Fix :meth:`importlib.resources.simple.ResourceHandle.open` for text mode,
-added missed ``stream`` argument.
diff --git a/Misc/NEWS.d/next/Library/2023-11-20-16-15-44.gh-issue-112281.gH4EVk.rst b/Misc/NEWS.d/next/Library/2023-11-20-16-15-44.gh-issue-112281.gH4EVk.rst
deleted file mode 100644
index 01f6689bb471cd..00000000000000
--- a/Misc/NEWS.d/next/Library/2023-11-20-16-15-44.gh-issue-112281.gH4EVk.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-Allow creating :ref:`union of types<types-union>` for
-:class:`typing.Annotated` with unhashable metadata.
diff --git a/Misc/NEWS.d/next/Library/2024-01-11-15-10-53.gh-issue-97959.UOj6d4.rst b/Misc/NEWS.d/next/Library/2024-01-11-15-10-53.gh-issue-97959.UOj6d4.rst
deleted file mode 100644
index a317271947dc37..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-01-11-15-10-53.gh-issue-97959.UOj6d4.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-Fix rendering class methods, bound methods, method and function aliases in
-:mod:`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.
diff --git a/Misc/NEWS.d/next/Library/2024-01-30-23-28-29.gh-issue-114763.BRjKkg.rst b/Misc/NEWS.d/next/Library/2024-01-30-23-28-29.gh-issue-114763.BRjKkg.rst
deleted file mode 100644
index e8bdb83dde61fb..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-01-30-23-28-29.gh-issue-114763.BRjKkg.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-Protect modules loaded with :class:`importlib.util.LazyLoader` from race
-conditions when multiple threads try to access attributes before the loading
-is complete.
diff --git a/Misc/NEWS.d/next/Library/2024-02-07-12-37-52.gh-issue-79382.Yz_5WB.rst b/Misc/NEWS.d/next/Library/2024-02-07-12-37-52.gh-issue-79382.Yz_5WB.rst
deleted file mode 100644
index 5eb1888943186a..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-02-07-12-37-52.gh-issue-79382.Yz_5WB.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-Trailing ``**`` no longer allows to match files and non-existing paths in
-recursive :func:`~glob.glob`.
diff --git a/Misc/NEWS.d/next/Library/2024-02-08-13-26-14.gh-issue-115059.DqP9dr.rst b/Misc/NEWS.d/next/Library/2024-02-08-13-26-14.gh-issue-115059.DqP9dr.rst
deleted file mode 100644
index 331baedd3b24c5..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-02-08-13-26-14.gh-issue-115059.DqP9dr.rst
+++ /dev/null
@@ -1 +0,0 @@
-:meth:`io.BufferedRandom.read1` now flushes the underlying write buffer.
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
deleted file mode 100644
index 6f1015235cc25d..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-02-08-14-21-28.gh-issue-115133.ycl4ko.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-Fix tests for :class:`~xml.etree.ElementTree.XMLPullParser` with Expat
-2.6.0.
diff --git a/Misc/NEWS.d/next/Library/2024-02-09-07-20-16.gh-issue-115165.yfJLXA.rst b/Misc/NEWS.d/next/Library/2024-02-09-07-20-16.gh-issue-115165.yfJLXA.rst
deleted file mode 100644
index 3e6eef183ad524..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-02-09-07-20-16.gh-issue-115165.yfJLXA.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-Most exceptions are now ignored when attempting to set the ``__orig_class__``
-attribute on objects returned when calling :mod:`typing` generic aliases
-(including generic aliases created using :data:`typing.Annotated`).
-Previously only :exc:`AttributeError` was ignored. Patch by Dave Shawley.
diff --git a/Misc/NEWS.d/next/Library/2024-02-09-17-56-06.gh-issue-115198.QKrxUQ.rst b/Misc/NEWS.d/next/Library/2024-02-09-17-56-06.gh-issue-115198.QKrxUQ.rst
deleted file mode 100644
index 78c10aeb4f9e77..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-02-09-17-56-06.gh-issue-115198.QKrxUQ.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix support of Docutils >= 0.19 in :mod:`distutils`.
diff --git a/Misc/NEWS.d/next/Library/2024-02-09-19-41-48.gh-issue-115197.20wkWH.rst b/Misc/NEWS.d/next/Library/2024-02-09-19-41-48.gh-issue-115197.20wkWH.rst
deleted file mode 100644
index e6ca3cc525d74a..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-02-09-19-41-48.gh-issue-115197.20wkWH.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-``urllib.request`` no longer resolves the hostname before checking it
-against the system's proxy bypass list on macOS and Windows.
diff --git a/Misc/NEWS.d/next/Library/2024-02-11-20-23-36.gh-issue-114563.RzxNYT.rst b/Misc/NEWS.d/next/Library/2024-02-11-20-23-36.gh-issue-114563.RzxNYT.rst
deleted file mode 100644
index 013b6db8e6dbd7..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-02-11-20-23-36.gh-issue-114563.RzxNYT.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-Fix several :func:`format()` bugs when using the C implementation of :class:`~decimal.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)
diff --git a/Misc/NEWS.d/next/Library/2024-02-13-18-27-03.gh-issue-115392.gle5tp.rst b/Misc/NEWS.d/next/Library/2024-02-13-18-27-03.gh-issue-115392.gle5tp.rst
deleted file mode 100644
index 1c3368968e4cf0..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-02-13-18-27-03.gh-issue-115392.gle5tp.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-Fix a bug in :mod:`doctest` where incorrect line numbers would be
-reported for decorated functions.
diff --git a/Misc/NEWS.d/next/Library/2024-02-15-19-11-49.gh-issue-101293.898b8l.rst b/Misc/NEWS.d/next/Library/2024-02-15-19-11-49.gh-issue-101293.898b8l.rst
deleted file mode 100644
index 98365d2edbc4b5..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-02-15-19-11-49.gh-issue-101293.898b8l.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-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 :meth:`inspect.Signature.from_callable`.
diff --git a/Misc/NEWS.d/next/Library/2024-02-15-23-42-54.gh-issue-112006.4wxcK-.rst b/Misc/NEWS.d/next/Library/2024-02-15-23-42-54.gh-issue-112006.4wxcK-.rst
deleted file mode 100644
index 7e9fe97a72b5eb..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-02-15-23-42-54.gh-issue-112006.4wxcK-.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-Fix :func:`inspect.unwrap` for types with the ``__wrapper__`` data
-descriptor.
diff --git a/Misc/NEWS.d/next/Library/2024-02-16-10-18-25.gh-issue-115570.bI6uu3.rst b/Misc/NEWS.d/next/Library/2024-02-16-10-18-25.gh-issue-115570.bI6uu3.rst
deleted file mode 100644
index f3c8a11380a283..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-02-16-10-18-25.gh-issue-115570.bI6uu3.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-A :exc:`DeprecationWarning` is no longer omitted on access to the
-``__doc__`` attributes of the deprecated ``typing.io`` and ``typing.re``
-pseudo-modules.
diff --git a/Misc/NEWS.d/next/Library/2024-02-17-18-47-12.gh-issue-115618.napiNp.rst b/Misc/NEWS.d/next/Library/2024-02-17-18-47-12.gh-issue-115618.napiNp.rst
deleted file mode 100644
index cb4b147d5dc663..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-02-17-18-47-12.gh-issue-115618.napiNp.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-Fix improper decreasing the reference count for ``None`` argument in
-:class:`property` methods :meth:`~property.getter`, :meth:`~property.setter`
-and :meth:`~property.deleter`.
diff --git a/Misc/NEWS.d/next/Library/2024-02-20-16-42-54.gh-issue-115712.EXVMXw.rst b/Misc/NEWS.d/next/Library/2024-02-20-16-42-54.gh-issue-115712.EXVMXw.rst
deleted file mode 100644
index 70243dc6480b7e..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-02-20-16-42-54.gh-issue-115712.EXVMXw.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-:func:`csv.writer()` now quotes empty fields if delimiter is a
-space and skipinitialspace is true and raises exception if quoting is not
-possible.
diff --git a/Misc/NEWS.d/next/Library/2024-02-20-22-02-34.gh-issue-67044.QF9_Ru.rst b/Misc/NEWS.d/next/Library/2024-02-20-22-02-34.gh-issue-67044.QF9_Ru.rst
deleted file mode 100644
index 095e69b6cadab6..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-02-20-22-02-34.gh-issue-67044.QF9_Ru.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-:func:`csv.writer` now always quotes or escapes ``'\r'`` and ``'\n'``,
-regardless of *lineterminator* value.
diff --git a/Misc/NEWS.d/next/Library/2024-02-21-17-54-59.gh-issue-74668.JT-Q8W.rst b/Misc/NEWS.d/next/Library/2024-02-21-17-54-59.gh-issue-74668.JT-Q8W.rst
deleted file mode 100644
index f4a6e6d7b51b41..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-02-21-17-54-59.gh-issue-74668.JT-Q8W.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-:mod:`urllib.parse` functions :func:`~urllib.parse.parse_qs` and
-:func:`~urllib.parse.parse_qsl` now support bytes arguments containing raw
-and percent-encoded non-ASCII data.
diff --git a/Misc/NEWS.d/next/Library/2024-02-22-11-29-27.gh-issue-115809.9H1DhB.rst b/Misc/NEWS.d/next/Library/2024-02-22-11-29-27.gh-issue-115809.9H1DhB.rst
deleted file mode 100644
index 2a47efbae5c84d..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-02-22-11-29-27.gh-issue-115809.9H1DhB.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-Improve algorithm for computing which rolled-over log files to delete in
-:class:`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.
diff --git a/Misc/NEWS.d/next/Library/2024-02-24-18-48-14.gh-issue-115886.rgM6AF.rst b/Misc/NEWS.d/next/Library/2024-02-24-18-48-14.gh-issue-115886.rgM6AF.rst
deleted file mode 100644
index 9688f713d5ba7b..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-02-24-18-48-14.gh-issue-115886.rgM6AF.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-Fix silent truncation of the name with an embedded null character in
-:class:`multiprocessing.shared_memory.SharedMemory`.
diff --git a/Misc/NEWS.d/next/Library/2024-02-25-19-20-05.gh-issue-115881.ro_Kuw.rst b/Misc/NEWS.d/next/Library/2024-02-25-19-20-05.gh-issue-115881.ro_Kuw.rst
deleted file mode 100644
index 99bccb265ff80c..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-02-25-19-20-05.gh-issue-115881.ro_Kuw.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-Fix issue where :func:`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.
diff --git a/Misc/NEWS.d/next/Library/2024-02-27-13-05-51.gh-issue-75988.In6LlB.rst b/Misc/NEWS.d/next/Library/2024-02-27-13-05-51.gh-issue-75988.In6LlB.rst
deleted file mode 100644
index 682b7cfa06b868..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-02-27-13-05-51.gh-issue-75988.In6LlB.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fixed :func:`unittest.mock.create_autospec` to pass the call through to the wrapped object to return the real result.
diff --git a/Misc/NEWS.d/next/Library/2024-02-29-17-06-54.gh-issue-76511.WqjRLP.rst b/Misc/NEWS.d/next/Library/2024-02-29-17-06-54.gh-issue-76511.WqjRLP.rst
deleted file mode 100644
index da62f8a2450711..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-02-29-17-06-54.gh-issue-76511.WqjRLP.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-Fix UnicodeEncodeError in :meth:`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.
diff --git a/Misc/NEWS.d/next/Library/2024-02-29-20-06-06.gh-issue-87115.FVMiOR.rst b/Misc/NEWS.d/next/Library/2024-02-29-20-06-06.gh-issue-87115.FVMiOR.rst
deleted file mode 100644
index 844340583cd456..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-02-29-20-06-06.gh-issue-87115.FVMiOR.rst
+++ /dev/null
@@ -1 +0,0 @@
-Set ``__main__.__spec__`` to ``None`` when running a script with :mod:`pdb`
diff --git a/Misc/NEWS.d/next/Library/2024-03-01-11-57-32.gh-issue-88352.bZ68rw.rst b/Misc/NEWS.d/next/Library/2024-03-01-11-57-32.gh-issue-88352.bZ68rw.rst
deleted file mode 100644
index 8ad4ff7cb52414..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-03-01-11-57-32.gh-issue-88352.bZ68rw.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-Fix the computation of the next rollover time in the
-:class:`logging.TimedRotatingFileHandler` handler. :meth:`!computeRollover`
-now always returns a timestamp larger than the specified time and works
-correctly during the DST change. :meth:`!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.
diff --git a/Misc/NEWS.d/next/Library/2024-03-01-14-22-08.gh-issue-115978.r2ePTo.rst b/Misc/NEWS.d/next/Library/2024-03-01-14-22-08.gh-issue-115978.r2ePTo.rst
deleted file mode 100644
index 2adac31ac6c21d..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-03-01-14-22-08.gh-issue-115978.r2ePTo.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-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).
diff --git a/Misc/NEWS.d/next/Library/2024-03-01-20-23-57.gh-issue-90535.wXm-jC.rst b/Misc/NEWS.d/next/Library/2024-03-01-20-23-57.gh-issue-90535.wXm-jC.rst
deleted file mode 100644
index 9af4efabb6b5b2..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-03-01-20-23-57.gh-issue-90535.wXm-jC.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-Fix support of *interval* values > 1 in
-:class:`logging.TimedRotatingFileHandler` for ``when='MIDNIGHT'`` and
-``when='Wx'``.
diff --git a/Misc/NEWS.d/next/Library/2024-03-05-02-09-18.gh-issue-116325.FmlBYv.rst b/Misc/NEWS.d/next/Library/2024-03-05-02-09-18.gh-issue-116325.FmlBYv.rst
deleted file mode 100644
index aec4ee79b59cf2..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-03-05-02-09-18.gh-issue-116325.FmlBYv.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-:mod:`typing`: raise :exc:`SyntaxError` instead of :exc:`AttributeError`
-on forward references as empty strings.
diff --git a/Misc/NEWS.d/next/Library/2024-03-05-20-53-34.gh-issue-116143.sww6Zl.rst b/Misc/NEWS.d/next/Library/2024-03-05-20-53-34.gh-issue-116143.sww6Zl.rst
deleted file mode 100644
index 07aa312ee25f3b..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-03-05-20-53-34.gh-issue-116143.sww6Zl.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-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.
diff --git a/Misc/NEWS.d/next/Library/2024-03-06-18-30-37.gh-issue-116401.3Wcda2.rst b/Misc/NEWS.d/next/Library/2024-03-06-18-30-37.gh-issue-116401.3Wcda2.rst
deleted file mode 100644
index 121f0065ecca95..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-03-06-18-30-37.gh-issue-116401.3Wcda2.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-Fix blocking :func:`os.fwalk` and :func:`shutil.rmtree` on opening named
-pipe.
diff --git a/Misc/NEWS.d/next/Library/2024-03-08-11-31-49.gh-issue-116484.VMAsU7.rst b/Misc/NEWS.d/next/Library/2024-03-08-11-31-49.gh-issue-116484.VMAsU7.rst
deleted file mode 100644
index 265c3810466d39..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-03-08-11-31-49.gh-issue-116484.VMAsU7.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-Change automatically generated :class:`tkinter.Checkbutton` widget names to
-avoid collisions with automatically generated
-:class:`tkinter.ttk.Checkbutton` widget names within the same parent widget.
diff --git a/Misc/NEWS.d/next/Library/2024-03-11-12-11-10.gh-issue-116600.FcNBy_.rst b/Misc/NEWS.d/next/Library/2024-03-11-12-11-10.gh-issue-116600.FcNBy_.rst
deleted file mode 100644
index e9148ba9290e7b..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-03-11-12-11-10.gh-issue-116600.FcNBy_.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix :func:`repr` for global :class:`~enum.Flag` members.
diff --git a/Misc/NEWS.d/next/Library/2024-03-14-10-01-23.gh-issue-116811._h5iKP.rst b/Misc/NEWS.d/next/Library/2024-03-14-10-01-23.gh-issue-116811._h5iKP.rst
deleted file mode 100644
index 00168632429996..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-03-14-10-01-23.gh-issue-116811._h5iKP.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-In ``PathFinder.invalidate_caches``, delegate to
-``MetadataPathFinder.invalidate_caches``.
diff --git a/Misc/NEWS.d/next/Library/2024-03-14-14-01-46.gh-issue-116764.moB3Lc.rst b/Misc/NEWS.d/next/Library/2024-03-14-14-01-46.gh-issue-116764.moB3Lc.rst
deleted file mode 100644
index e92034b0e8b157..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-03-14-14-01-46.gh-issue-116764.moB3Lc.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-Restore support of ``None`` and other false values in :mod:`urllib.parse`
-functions :func:`~urllib.parse.parse_qs` and
-:func:`~urllib.parse.parse_qsl`. Also, they now raise a TypeError for
-non-zero integers and non-empty sequences.
diff --git a/Misc/NEWS.d/next/Library/2024-03-14-20-59-28.gh-issue-90095.7UaJ1U.rst b/Misc/NEWS.d/next/Library/2024-03-14-20-59-28.gh-issue-90095.7UaJ1U.rst
deleted file mode 100644
index b7024c74f7aa7d..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-03-14-20-59-28.gh-issue-90095.7UaJ1U.rst
+++ /dev/null
@@ -1 +0,0 @@
-Ignore empty lines and comments in ``.pdbrc``
diff --git a/Misc/NEWS.d/next/Library/2024-03-18-14-36-50.gh-issue-116957.dTCs4f.rst b/Misc/NEWS.d/next/Library/2024-03-18-14-36-50.gh-issue-116957.dTCs4f.rst
deleted file mode 100644
index 51fe04957e26bc..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-03-18-14-36-50.gh-issue-116957.dTCs4f.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-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.
diff --git a/Misc/NEWS.d/next/Library/2024-03-19-11-08-26.gh-issue-90872.ghys95.rst b/Misc/NEWS.d/next/Library/2024-03-19-11-08-26.gh-issue-90872.ghys95.rst
deleted file mode 100644
index ead68caa9fe88b..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-03-19-11-08-26.gh-issue-90872.ghys95.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-On Windows, :meth:`subprocess.Popen.wait` no longer calls
-``WaitForSingleObject()`` with a negative timeout: pass ``0`` ms if the
-timeout is negative. Patch by Victor Stinner.
diff --git a/Misc/NEWS.d/next/Library/2024-03-21-07-27-36.gh-issue-117110.9K1InX.rst b/Misc/NEWS.d/next/Library/2024-03-21-07-27-36.gh-issue-117110.9K1InX.rst
deleted file mode 100644
index 32f8f81c8d052f..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-03-21-07-27-36.gh-issue-117110.9K1InX.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix a bug that prevents subclasses of :class:`typing.Any` to be instantiated with arguments. Patch by Chris Fu.
diff --git a/Misc/NEWS.d/next/Library/2024-03-21-17-07-38.gh-issue-117084.w1mTpT.rst b/Misc/NEWS.d/next/Library/2024-03-21-17-07-38.gh-issue-117084.w1mTpT.rst
deleted file mode 100644
index 6e7790e926b9d2..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-03-21-17-07-38.gh-issue-117084.w1mTpT.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-Fix :mod:`zipfile` extraction for directory entries with the name containing
-backslashes on Windows.
diff --git a/Misc/NEWS.d/next/Library/2024-03-23-14-26-18.gh-issue-117178.vTisTG.rst b/Misc/NEWS.d/next/Library/2024-03-23-14-26-18.gh-issue-117178.vTisTG.rst
deleted file mode 100644
index f9c53ebbfc3c96..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-03-23-14-26-18.gh-issue-117178.vTisTG.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-Fix regression in lazy loading of self-referential modules, introduced in
-gh-114781.
diff --git a/Misc/NEWS.d/next/Library/2024-03-27-21-05-52.gh-issue-117310.Bt2wox.rst b/Misc/NEWS.d/next/Library/2024-03-27-21-05-52.gh-issue-117310.Bt2wox.rst
deleted file mode 100644
index 429b890b8b609a..00000000000000
--- a/Misc/NEWS.d/next/Library/2024-03-27-21-05-52.gh-issue-117310.Bt2wox.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-Fixed an unlikely early & extra ``Py_DECREF`` triggered crash in :mod:`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.
diff --git a/Misc/NEWS.d/next/Security/2024-01-26-22-14-09.gh-issue-114572.t1QMQD.rst b/Misc/NEWS.d/next/Security/2024-01-26-22-14-09.gh-issue-114572.t1QMQD.rst
deleted file mode 100644
index b4f9fe64db0615..00000000000000
--- a/Misc/NEWS.d/next/Security/2024-01-26-22-14-09.gh-issue-114572.t1QMQD.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-:meth:`ssl.SSLContext.cert_store_stats` and
-:meth:`ssl.SSLContext.get_ca_certs` now correctly lock access to the
-certificate store, when the :class:`ssl.SSLContext` is shared across
-multiple threads.
diff --git a/Misc/NEWS.d/next/Security/2024-02-12-00-33-01.gh-issue-115243.e1oGX8.rst b/Misc/NEWS.d/next/Security/2024-02-12-00-33-01.gh-issue-115243.e1oGX8.rst
deleted file mode 100644
index ae0e910c7d159c..00000000000000
--- a/Misc/NEWS.d/next/Security/2024-02-12-00-33-01.gh-issue-115243.e1oGX8.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix possible crashes in :meth:`collections.deque.index` when the deque is concurrently modified.
diff --git a/Misc/NEWS.d/next/Security/2024-02-13-15-14-39.gh-issue-115399.xT-scP.rst b/Misc/NEWS.d/next/Security/2024-02-13-15-14-39.gh-issue-115399.xT-scP.rst
deleted file mode 100644
index e8163b6f29c189..00000000000000
--- a/Misc/NEWS.d/next/Security/2024-02-13-15-14-39.gh-issue-115399.xT-scP.rst
+++ /dev/null
@@ -1 +0,0 @@
-Update bundled libexpat to 2.6.0
diff --git a/Misc/NEWS.d/next/Security/2024-02-18-03-14-40.gh-issue-115398.tzvxH8.rst b/Misc/NEWS.d/next/Security/2024-02-18-03-14-40.gh-issue-115398.tzvxH8.rst
deleted file mode 100644
index a40fcd35ef99ae..00000000000000
--- a/Misc/NEWS.d/next/Security/2024-02-18-03-14-40.gh-issue-115398.tzvxH8.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-Allow controlling Expat >=2.6.0 reparse deferral (CVE-2023-52425) by adding
-five new methods:
-
-* :meth:`xml.etree.ElementTree.XMLParser.flush`
-* :meth:`xml.etree.ElementTree.XMLPullParser.flush`
-* :meth:`xml.parsers.expat.xmlparser.GetReparseDeferralEnabled`
-* :meth:`xml.parsers.expat.xmlparser.SetReparseDeferralEnabled`
-* :meth:`xml.sax.expatreader.ExpatParser.flush`
diff --git a/Misc/NEWS.d/next/Tests/2024-02-09-10-59-17.gh-issue-115198.1JP6LG.rst b/Misc/NEWS.d/next/Tests/2024-02-09-10-59-17.gh-issue-115198.1JP6LG.rst
deleted file mode 100644
index 2ad92f4b472bbf..00000000000000
--- a/Misc/NEWS.d/next/Tests/2024-02-09-10-59-17.gh-issue-115198.1JP6LG.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix test_check_metadata_deprecate in distutils tests with a newer Docutils.
diff --git a/Misc/NEWS.d/next/Tests/2024-02-17-08-25-01.gh-issue-115596.RGPCrR.rst b/Misc/NEWS.d/next/Tests/2024-02-17-08-25-01.gh-issue-115596.RGPCrR.rst
deleted file mode 100644
index 2bcb8b9ac6bcd4..00000000000000
--- a/Misc/NEWS.d/next/Tests/2024-02-17-08-25-01.gh-issue-115596.RGPCrR.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-Fix ``ProgramPriorityTests`` in ``test_os`` permanently changing the process
-priority.
diff --git a/Misc/NEWS.d/next/Tests/2024-02-18-14-20-52.gh-issue-115122.3rGNo9.rst b/Misc/NEWS.d/next/Tests/2024-02-18-14-20-52.gh-issue-115122.3rGNo9.rst
deleted file mode 100644
index e187a40a40516b..00000000000000
--- a/Misc/NEWS.d/next/Tests/2024-02-18-14-20-52.gh-issue-115122.3rGNo9.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-Add ``--bisect`` option to regrtest test runner: run failed tests with
-``test.bisect_cmd`` to identify failing tests. Patch by Victor Stinner.
diff --git a/Misc/NEWS.d/next/Tests/2024-02-20-15-47-41.gh-issue-115720.w8i8UG.rst b/Misc/NEWS.d/next/Tests/2024-02-20-15-47-41.gh-issue-115720.w8i8UG.rst
deleted file mode 100644
index a03ee11d974251..00000000000000
--- a/Misc/NEWS.d/next/Tests/2024-02-20-15-47-41.gh-issue-115720.w8i8UG.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-Leak tests (``-R``, ``--huntrleaks``) now show a summary of the number of
-leaks found in each iteration.
diff --git a/Misc/NEWS.d/next/Tests/2024-03-06-11-00-36.gh-issue-116307.Uij0t_.rst b/Misc/NEWS.d/next/Tests/2024-03-06-11-00-36.gh-issue-116307.Uij0t_.rst
deleted file mode 100644
index 93b62d1822b723..00000000000000
--- a/Misc/NEWS.d/next/Tests/2024-03-06-11-00-36.gh-issue-116307.Uij0t_.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-Added import helper ``isolated_modules`` as ``CleanImport`` does not remove
-modules imported during the context.
diff --git a/Misc/NEWS.d/next/Tests/2024-03-13-12-06-49.gh-issue-115979.zsNpQD.rst b/Misc/NEWS.d/next/Tests/2024-03-13-12-06-49.gh-issue-115979.zsNpQD.rst
deleted file mode 100644
index 02bc2b88942e4f..00000000000000
--- a/Misc/NEWS.d/next/Tests/2024-03-13-12-06-49.gh-issue-115979.zsNpQD.rst
+++ /dev/null
@@ -1 +0,0 @@
-Update test_importlib so that it passes under WASI SDK 21.
diff --git a/Misc/NEWS.d/next/Tests/2024-03-24-23-49-25.gh-issue-117187.eMLT5n.rst b/Misc/NEWS.d/next/Tests/2024-03-24-23-49-25.gh-issue-117187.eMLT5n.rst
deleted file mode 100644
index 0c0b0e0f443396..00000000000000
--- a/Misc/NEWS.d/next/Tests/2024-03-24-23-49-25.gh-issue-117187.eMLT5n.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix XML tests for vanilla Expat <2.6.0.
diff --git a/Misc/NEWS.d/next/Tests/2024-03-25-21-31-49.gh-issue-83434.U7Z8cY.rst b/Misc/NEWS.d/next/Tests/2024-03-25-21-31-49.gh-issue-83434.U7Z8cY.rst
deleted file mode 100644
index 7b7a8fcf53bb3c..00000000000000
--- a/Misc/NEWS.d/next/Tests/2024-03-25-21-31-49.gh-issue-83434.U7Z8cY.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-Disable JUnit XML output (``--junit-xml=FILE`` command line option) in
-regrtest when hunting for reference leaks (``-R`` option). Patch by Victor
-Stinner.
diff --git a/Misc/NEWS.d/next/Tools-Demos/2024-02-14-15-58-13.gh-issue-113516.TyIHWx.rst b/Misc/NEWS.d/next/Tools-Demos/2024-02-14-15-58-13.gh-issue-113516.TyIHWx.rst
deleted file mode 100644
index 0dd1128e02de81..00000000000000
--- a/Misc/NEWS.d/next/Tools-Demos/2024-02-14-15-58-13.gh-issue-113516.TyIHWx.rst
+++ /dev/null
@@ -1 +0,0 @@
-Don't set ``LDSHARED`` when building for WASI.
diff --git a/Misc/NEWS.d/next/Windows/2024-02-06-09-05-13.gh-issue-115009.ShMjZs.rst b/Misc/NEWS.d/next/Windows/2024-02-06-09-05-13.gh-issue-115009.ShMjZs.rst
deleted file mode 100644
index 5bdb6963a24311..00000000000000
--- a/Misc/NEWS.d/next/Windows/2024-02-06-09-05-13.gh-issue-115009.ShMjZs.rst
+++ /dev/null
@@ -1 +0,0 @@
-Update Windows installer to use SQLite 3.45.1.
diff --git a/Misc/NEWS.d/next/Windows/2024-02-15-23-16-31.gh-issue-115543.otrWnw.rst b/Misc/NEWS.d/next/Windows/2024-02-15-23-16-31.gh-issue-115543.otrWnw.rst
deleted file mode 100644
index ebd15c83b83491..00000000000000
--- a/Misc/NEWS.d/next/Windows/2024-02-15-23-16-31.gh-issue-115543.otrWnw.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-:ref:`launcher` can now detect Python 3.13 when installed from the Microsoft
-Store, and will install Python 3.12 by default when
-:envvar:`PYLAUNCHER_ALLOW_INSTALL` is set.
diff --git a/Misc/NEWS.d/next/Windows/2024-02-21-23-48-59.gh-issue-115554.02mpQC.rst b/Misc/NEWS.d/next/Windows/2024-02-21-23-48-59.gh-issue-115554.02mpQC.rst
deleted file mode 100644
index b3c078b578205e..00000000000000
--- a/Misc/NEWS.d/next/Windows/2024-02-21-23-48-59.gh-issue-115554.02mpQC.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-The installer now has more strict rules about updating the :ref:`launcher`.
-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.
diff --git a/Misc/NEWS.d/next/Windows/2024-02-24-23-03-43.gh-issue-91227.sL4zWC.rst b/Misc/NEWS.d/next/Windows/2024-02-24-23-03-43.gh-issue-91227.sL4zWC.rst
deleted file mode 100644
index 8e53afdd619001..00000000000000
--- a/Misc/NEWS.d/next/Windows/2024-02-24-23-03-43.gh-issue-91227.sL4zWC.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix the asyncio ProactorEventLoop implementation so that sending a datagram to an address that is not listening does not prevent receiving any more datagrams.
diff --git a/Misc/NEWS.d/next/Windows/2024-03-14-01-58-22.gh-issue-116773.H2UldY.rst b/Misc/NEWS.d/next/Windows/2024-03-14-01-58-22.gh-issue-116773.H2UldY.rst
deleted file mode 100644
index 8fc3fe80041d26..00000000000000
--- a/Misc/NEWS.d/next/Windows/2024-03-14-01-58-22.gh-issue-116773.H2UldY.rst
+++ /dev/null
@@ -1 +0,0 @@
-Fix instances of ``<_overlapped.Overlapped object at 0xXXX> still has pending operation at deallocation, the process may crash``.
diff --git a/README.rst b/README.rst
index 2f44de8f82ecf9..ffa409a54c565a 100644
--- a/README.rst
+++ b/README.rst
@@ -1,4 +1,4 @@
-This is Python version 3.11.8
+This is Python version 3.11.9
=============================
.. image:: https://github.com/python/cpython/workflows/Tests/badge.svg
1
0
02 Apr '24
https://github.com/python/cpython/commit/38bcbb22f9f0e86b66feb9381810a09e74…
commit: 38bcbb22f9f0e86b66feb9381810a09e7488dc1f
branch: 3.11
author: Miss Islington (bot) <31488909+miss-islington(a)users.noreply.github.com>
committer: zooba <steve.dower(a)microsoft.com>
date: 2024-04-02T13:31:08Z
summary:
[3.11] gh-115538: Use pathlib to compare prefixes in test_venv (GH-117076)
gh-115538: Use pathlib to compare prefixes in test_venv (GH-117076)
(cherry picked from commit 52f5b7f9e05fc4a25e385c046e0b091641674556)
Co-authored-by: AN Long <aisk(a)users.noreply.github.com>
files:
M Lib/test/test_venv.py
diff --git a/Lib/test/test_venv.py b/Lib/test/test_venv.py
index a60f4cd3111ea8..9563282e6d9b9c 100644
--- a/Lib/test/test_venv.py
+++ b/Lib/test/test_venv.py
@@ -253,7 +253,8 @@ def test_prefixes(self):
('base_exec_prefix', sys.base_exec_prefix)):
cmd[2] = 'import sys; print(sys.%s)' % prefix
out, err = check_output(cmd)
- self.assertEqual(out.strip(), expected.encode(), prefix)
+ self.assertEqual(pathlib.Path(out.strip().decode()),
+ pathlib.Path(expected), prefix)
@requireVenvCreate
def test_sysconfig(self):
1
0
02 Apr '24
https://github.com/python/cpython/commit/75b3139b53ea0377ae0e933985ee86c8f6…
commit: 75b3139b53ea0377ae0e933985ee86c8f6ad5a6c
branch: 3.12
author: Miss Islington (bot) <31488909+miss-islington(a)users.noreply.github.com>
committer: zooba <steve.dower(a)microsoft.com>
date: 2024-04-02T13:29:32Z
summary:
[3.12] gh-115538: Use pathlib to compare prefixes in test_venv (GH-117076)
gh-115538: Use pathlib to compare prefixes in test_venv (GH-117076)
(cherry picked from commit 52f5b7f9e05fc4a25e385c046e0b091641674556)
Co-authored-by: AN Long <aisk(a)users.noreply.github.com>
files:
M Lib/test/test_venv.py
diff --git a/Lib/test/test_venv.py b/Lib/test/test_venv.py
index 7540be2c10b86e..2f4417621e5ab8 100644
--- a/Lib/test/test_venv.py
+++ b/Lib/test/test_venv.py
@@ -252,7 +252,8 @@ def test_prefixes(self):
('base_exec_prefix', sys.base_exec_prefix)):
cmd[2] = 'import sys; print(sys.%s)' % prefix
out, err = check_output(cmd)
- self.assertEqual(out.strip(), expected.encode(), prefix)
+ self.assertEqual(pathlib.Path(out.strip().decode()),
+ pathlib.Path(expected), prefix)
@requireVenvCreate
def test_sysconfig(self):
1
0
https://github.com/python/cpython/commit/52f5b7f9e05fc4a25e385c046e0b091641…
commit: 52f5b7f9e05fc4a25e385c046e0b091641674556
branch: main
author: AN Long <aisk(a)users.noreply.github.com>
committer: zooba <steve.dower(a)microsoft.com>
date: 2024-04-02T14:10:24+01:00
summary:
gh-115538: Use pathlib to compare prefixes in test_venv (GH-117076)
files:
M Lib/test/test_venv.py
diff --git a/Lib/test/test_venv.py b/Lib/test/test_venv.py
index 63cc4b743862bc..f410ce7198dc86 100644
--- a/Lib/test/test_venv.py
+++ b/Lib/test/test_venv.py
@@ -273,7 +273,8 @@ def test_prefixes(self):
('base_exec_prefix', sys.base_exec_prefix)):
cmd[2] = 'import sys; print(sys.%s)' % prefix
out, err = check_output(cmd)
- self.assertEqual(out.strip(), expected.encode(), prefix)
+ self.assertEqual(pathlib.Path(out.strip().decode()),
+ pathlib.Path(expected), prefix)
@requireVenvCreate
def test_sysconfig(self):
1
0
02 Apr '24
https://github.com/python/cpython/commit/e3b6f287fc5d195859c29661145873c638…
commit: e3b6f287fc5d195859c29661145873c638c6dc83
branch: main
author: Victor Stinner <vstinner(a)python.org>
committer: vstinner <vstinner(a)python.org>
date: 2024-04-02T11:29:39Z
summary:
gh-113317: Argument Clinic: Add libclinic.return_converters (#117451)
Move the following converter classes to libclinic.return_converters:
* CReturnConverter
* CReturnConverterAutoRegister
* Py_ssize_t_return_converter
* bool_return_converter
* double_return_converter
* float_return_converter
* int_return_converter
* long_return_converter
* size_t_return_converter
* unsigned_int_return_converter
* unsigned_long_return_converter
Move also the add_c_return_converter() function there.
files:
A Tools/clinic/libclinic/return_converters.py
M Tools/clinic/clinic.py
M Tools/clinic/libclinic/function.py
diff --git a/Tools/clinic/clinic.py b/Tools/clinic/clinic.py
index a4e004d5b124d1..97b1f46a13411b 100755
--- a/Tools/clinic/clinic.py
+++ b/Tools/clinic/clinic.py
@@ -60,6 +60,9 @@
from libclinic.converters import (
self_converter, defining_class_converter, object_converter, buffer,
robuffer, rwbuffer, correct_name_for_self)
+from libclinic.return_converters import (
+ CReturnConverter, return_converters,
+ int_return_converter, ReturnConverterType)
# TODO:
@@ -2088,186 +2091,6 @@ def parse(self, block: Block) -> None:
""".strip().split())
-ReturnConverterType = Callable[..., "CReturnConverter"]
-
-
-# maps strings to callables.
-# these callables must be of the form:
-# def foo(*, ...)
-# The callable may have any number of keyword-only parameters.
-# The callable must return a CReturnConverter object.
-# The callable should not call builtins.print.
-ReturnConverterDict = dict[str, ReturnConverterType]
-return_converters: ReturnConverterDict = {}
-
-
-def add_c_return_converter(
- f: ReturnConverterType,
- name: str | None = None
-) -> ReturnConverterType:
- if not name:
- name = f.__name__
- if not name.endswith('_return_converter'):
- return f
- name = name.removesuffix('_return_converter')
- return_converters[name] = f
- return f
-
-
-class CReturnConverterAutoRegister(type):
- def __init__(
- cls: ReturnConverterType,
- name: str,
- bases: tuple[type[object], ...],
- classdict: dict[str, Any]
- ) -> None:
- add_c_return_converter(cls)
-
-
-class CReturnConverter(metaclass=CReturnConverterAutoRegister):
-
- # The C type to use for this variable.
- # 'type' should be a Python string specifying the type, e.g. "int".
- # If this is a pointer type, the type string should end with ' *'.
- type = 'PyObject *'
-
- # The Python default value for this parameter, as a Python value.
- # Or the magic value "unspecified" if there is no default.
- default: object = None
-
- def __init__(
- self,
- *,
- py_default: str | None = None,
- **kwargs: Any
- ) -> None:
- self.py_default = py_default
- try:
- self.return_converter_init(**kwargs)
- except TypeError as e:
- s = ', '.join(name + '=' + repr(value) for name, value in kwargs.items())
- sys.exit(self.__class__.__name__ + '(' + s + ')\n' + str(e))
-
- def return_converter_init(self) -> None: ...
-
- def declare(self, data: CRenderData) -> None:
- line: list[str] = []
- add = line.append
- add(self.type)
- if not self.type.endswith('*'):
- add(' ')
- add(data.converter_retval + ';')
- data.declarations.append(''.join(line))
- data.return_value = data.converter_retval
-
- def err_occurred_if(
- self,
- expr: str,
- data: CRenderData
- ) -> None:
- line = f'if (({expr}) && PyErr_Occurred()) {{\n goto exit;\n}}\n'
- data.return_conversion.append(line)
-
- def err_occurred_if_null_pointer(
- self,
- variable: str,
- data: CRenderData
- ) -> None:
- line = f'if ({variable} == NULL) {{\n goto exit;\n}}\n'
- data.return_conversion.append(line)
-
- def render(
- self,
- function: Function,
- data: CRenderData
- ) -> None: ...
-
-
-add_c_return_converter(CReturnConverter, 'object')
-
-
-class bool_return_converter(CReturnConverter):
- type = 'int'
-
- def render(
- self,
- function: Function,
- data: CRenderData
- ) -> None:
- self.declare(data)
- self.err_occurred_if(f"{data.converter_retval} == -1", data)
- data.return_conversion.append(
- f'return_value = PyBool_FromLong((long){data.converter_retval});\n'
- )
-
-
-class long_return_converter(CReturnConverter):
- type = 'long'
- conversion_fn = 'PyLong_FromLong'
- cast = ''
- unsigned_cast = ''
-
- def render(
- self,
- function: Function,
- data: CRenderData
- ) -> None:
- self.declare(data)
- self.err_occurred_if(f"{data.converter_retval} == {self.unsigned_cast}-1", data)
- data.return_conversion.append(
- f'return_value = {self.conversion_fn}({self.cast}{data.converter_retval});\n'
- )
-
-
-class int_return_converter(long_return_converter):
- type = 'int'
- cast = '(long)'
-
-
-class unsigned_long_return_converter(long_return_converter):
- type = 'unsigned long'
- conversion_fn = 'PyLong_FromUnsignedLong'
- unsigned_cast = '(unsigned long)'
-
-
-class unsigned_int_return_converter(unsigned_long_return_converter):
- type = 'unsigned int'
- cast = '(unsigned long)'
- unsigned_cast = '(unsigned int)'
-
-
-class Py_ssize_t_return_converter(long_return_converter):
- type = 'Py_ssize_t'
- conversion_fn = 'PyLong_FromSsize_t'
-
-
-class size_t_return_converter(long_return_converter):
- type = 'size_t'
- conversion_fn = 'PyLong_FromSize_t'
- unsigned_cast = '(size_t)'
-
-
-class double_return_converter(CReturnConverter):
- type = 'double'
- cast = ''
-
- def render(
- self,
- function: Function,
- data: CRenderData
- ) -> None:
- self.declare(data)
- self.err_occurred_if(f"{data.converter_retval} == -1.0", data)
- data.return_conversion.append(
- f'return_value = PyFloat_FromDouble({self.cast}{data.converter_retval});\n'
- )
-
-
-class float_return_converter(double_return_converter):
- type = 'float'
- cast = '(double)'
-
-
def eval_ast_expr(
node: ast.expr,
*,
diff --git a/Tools/clinic/libclinic/function.py b/Tools/clinic/libclinic/function.py
index b0dd08446e802d..1bfaad00cd0f08 100644
--- a/Tools/clinic/libclinic/function.py
+++ b/Tools/clinic/libclinic/function.py
@@ -6,9 +6,10 @@
import inspect
from typing import Final, Any, TYPE_CHECKING
if TYPE_CHECKING:
- from clinic import Clinic, CReturnConverter
+ from clinic import Clinic
from libclinic.converter import CConverter
from libclinic.converters import self_converter
+ from libclinic.return_converters import CReturnConverter
from libclinic import VersionTuple, unspecified
diff --git a/Tools/clinic/libclinic/return_converters.py b/Tools/clinic/libclinic/return_converters.py
new file mode 100644
index 00000000000000..7bdd257cfa3443
--- /dev/null
+++ b/Tools/clinic/libclinic/return_converters.py
@@ -0,0 +1,173 @@
+import sys
+from collections.abc import Callable
+from libclinic.crenderdata import CRenderData
+from libclinic.function import Function
+from typing import Any
+
+
+ReturnConverterType = Callable[..., "CReturnConverter"]
+
+
+# maps strings to callables.
+# these callables must be of the form:
+# def foo(*, ...)
+# The callable may have any number of keyword-only parameters.
+# The callable must return a CReturnConverter object.
+# The callable should not call builtins.print.
+ReturnConverterDict = dict[str, ReturnConverterType]
+return_converters: ReturnConverterDict = {}
+
+
+def add_c_return_converter(
+ f: ReturnConverterType,
+ name: str | None = None
+) -> ReturnConverterType:
+ if not name:
+ name = f.__name__
+ if not name.endswith('_return_converter'):
+ return f
+ name = name.removesuffix('_return_converter')
+ return_converters[name] = f
+ return f
+
+
+class CReturnConverterAutoRegister(type):
+ def __init__(
+ cls: ReturnConverterType,
+ name: str,
+ bases: tuple[type[object], ...],
+ classdict: dict[str, Any]
+ ) -> None:
+ add_c_return_converter(cls)
+
+
+class CReturnConverter(metaclass=CReturnConverterAutoRegister):
+
+ # The C type to use for this variable.
+ # 'type' should be a Python string specifying the type, e.g. "int".
+ # If this is a pointer type, the type string should end with ' *'.
+ type = 'PyObject *'
+
+ # The Python default value for this parameter, as a Python value.
+ # Or the magic value "unspecified" if there is no default.
+ default: object = None
+
+ def __init__(
+ self,
+ *,
+ py_default: str | None = None,
+ **kwargs: Any
+ ) -> None:
+ self.py_default = py_default
+ try:
+ self.return_converter_init(**kwargs)
+ except TypeError as e:
+ s = ', '.join(name + '=' + repr(value) for name, value in kwargs.items())
+ sys.exit(self.__class__.__name__ + '(' + s + ')\n' + str(e))
+
+ def return_converter_init(self) -> None: ...
+
+ def declare(self, data: CRenderData) -> None:
+ line: list[str] = []
+ add = line.append
+ add(self.type)
+ if not self.type.endswith('*'):
+ add(' ')
+ add(data.converter_retval + ';')
+ data.declarations.append(''.join(line))
+ data.return_value = data.converter_retval
+
+ def err_occurred_if(
+ self,
+ expr: str,
+ data: CRenderData
+ ) -> None:
+ line = f'if (({expr}) && PyErr_Occurred()) {{\n goto exit;\n}}\n'
+ data.return_conversion.append(line)
+
+ def err_occurred_if_null_pointer(
+ self,
+ variable: str,
+ data: CRenderData
+ ) -> None:
+ line = f'if ({variable} == NULL) {{\n goto exit;\n}}\n'
+ data.return_conversion.append(line)
+
+ def render(
+ self,
+ function: Function,
+ data: CRenderData
+ ) -> None: ...
+
+
+add_c_return_converter(CReturnConverter, 'object')
+
+
+class bool_return_converter(CReturnConverter):
+ type = 'int'
+
+ def render(self, function: Function, data: CRenderData) -> None:
+ self.declare(data)
+ self.err_occurred_if(f"{data.converter_retval} == -1", data)
+ data.return_conversion.append(
+ f'return_value = PyBool_FromLong((long){data.converter_retval});\n'
+ )
+
+
+class long_return_converter(CReturnConverter):
+ type = 'long'
+ conversion_fn = 'PyLong_FromLong'
+ cast = ''
+ unsigned_cast = ''
+
+ def render(self, function: Function, data: CRenderData) -> None:
+ self.declare(data)
+ self.err_occurred_if(f"{data.converter_retval} == {self.unsigned_cast}-1", data)
+ data.return_conversion.append(
+ f'return_value = {self.conversion_fn}({self.cast}{data.converter_retval});\n'
+ )
+
+
+class int_return_converter(long_return_converter):
+ type = 'int'
+ cast = '(long)'
+
+
+class unsigned_long_return_converter(long_return_converter):
+ type = 'unsigned long'
+ conversion_fn = 'PyLong_FromUnsignedLong'
+ unsigned_cast = '(unsigned long)'
+
+
+class unsigned_int_return_converter(unsigned_long_return_converter):
+ type = 'unsigned int'
+ cast = '(unsigned long)'
+ unsigned_cast = '(unsigned int)'
+
+
+class Py_ssize_t_return_converter(long_return_converter):
+ type = 'Py_ssize_t'
+ conversion_fn = 'PyLong_FromSsize_t'
+
+
+class size_t_return_converter(long_return_converter):
+ type = 'size_t'
+ conversion_fn = 'PyLong_FromSize_t'
+ unsigned_cast = '(size_t)'
+
+
+class double_return_converter(CReturnConverter):
+ type = 'double'
+ cast = ''
+
+ def render(self, function: Function, data: CRenderData) -> None:
+ self.declare(data)
+ self.err_occurred_if(f"{data.converter_retval} == -1.0", data)
+ data.return_conversion.append(
+ f'return_value = PyFloat_FromDouble({self.cast}{data.converter_retval});\n'
+ )
+
+
+class float_return_converter(double_return_converter):
+ type = 'float'
+ cast = '(double)'
1
0