Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit cc25310

Browse files
committed
Merge remote-tracking branch 'upstream/main' into codecs-exc
2 parents cd9c128 + 12226be commit cc25310

File tree

285 files changed

+6067
-1587
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

285 files changed

+6067
-1587
lines changed

Doc/c-api/code.rst

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -172,16 +172,27 @@ bound into a function.
172172
before the destruction of *co* takes place, so the prior state of *co*
173173
can be inspected.
174174
175+
If *event* is ``PY_CODE_EVENT_DESTROY``, taking a reference in the callback
176+
to the about-to-be-destroyed code object will resurrect it and prevent it
177+
from being freed at this time. When the resurrected object is destroyed
178+
later, any watcher callbacks active at that time will be called again.
179+
175180
Users of this API should not rely on internal runtime implementation
176181
details. Such details may include, but are not limited to, the exact
177182
order and timing of creation and destruction of code objects. While
178183
changes in these details may result in differences observable by watchers
179184
(including whether a callback is invoked or not), it does not change
180185
the semantics of the Python code being executed.
181186
182-
If the callback returns with an exception set, it must return ``-1``; this
183-
exception will be printed as an unraisable exception using
184-
:c:func:`PyErr_WriteUnraisable`. Otherwise it should return ``0``.
187+
If the callback sets an exception, it must return ``-1``; this exception will
188+
be printed as an unraisable exception using :c:func:`PyErr_WriteUnraisable`.
189+
Otherwise it should return ``0``.
190+
191+
There may already be a pending exception set on entry to the callback. In
192+
this case, the callback should return ``0`` with the same exception still
193+
set. This means the callback may not call any other API that can set an
194+
exception unless it saves and clears the exception state first, and restores
195+
it before returning.
185196
186197
.. versionadded:: 3.12
187198

Doc/c-api/dict.rst

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -298,13 +298,26 @@ Dictionary Objects
298298
dictionary.
299299
300300
The callback may inspect but must not modify *dict*; doing so could have
301-
unpredictable effects, including infinite recursion.
301+
unpredictable effects, including infinite recursion. Do not trigger Python
302+
code execution in the callback, as it could modify the dict as a side effect.
303+
304+
If *event* is ``PyDict_EVENT_DEALLOCATED``, taking a new reference in the
305+
callback to the about-to-be-destroyed dictionary will resurrect it and
306+
prevent it from being freed at this time. When the resurrected object is
307+
destroyed later, any watcher callbacks active at that time will be called
308+
again.
302309
303310
Callbacks occur before the notified modification to *dict* takes place, so
304311
the prior state of *dict* can be inspected.
305312
306-
If the callback returns with an exception set, it must return ``-1``; this
307-
exception will be printed as an unraisable exception using
308-
:c:func:`PyErr_WriteUnraisable`. Otherwise it should return ``0``.
313+
If the callback sets an exception, it must return ``-1``; this exception will
314+
be printed as an unraisable exception using :c:func:`PyErr_WriteUnraisable`.
315+
Otherwise it should return ``0``.
316+
317+
There may already be a pending exception set on entry to the callback. In
318+
this case, the callback should return ``0`` with the same exception still
319+
set. This means the callback may not call any other API that can set an
320+
exception unless it saves and clears the exception state first, and restores
321+
it before returning.
309322
310323
.. versionadded:: 3.12

Doc/c-api/function.rst

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,19 @@ There are a few functions specific to Python functions.
173173
runtime behavior depending on optimization decisions, it does not change
174174
the semantics of the Python code being executed.
175175
176-
If the callback returns with an exception set, it must return ``-1``; this
177-
exception will be printed as an unraisable exception using
178-
:c:func:`PyErr_WriteUnraisable`. Otherwise it should return ``0``.
176+
If *event* is ``PyFunction_EVENT_DESTROY``, Taking a reference in the
177+
callback to the about-to-be-destroyed function will resurrect it, preventing
178+
it from being freed at this time. When the resurrected object is destroyed
179+
later, any watcher callbacks active at that time will be called again.
180+
181+
If the callback sets an exception, it must return ``-1``; this exception will
182+
be printed as an unraisable exception using :c:func:`PyErr_WriteUnraisable`.
183+
Otherwise it should return ``0``.
184+
185+
There may already be a pending exception set on entry to the callback. In
186+
this case, the callback should return ``0`` with the same exception still
187+
set. This means the callback may not call any other API that can set an
188+
exception unless it saves and clears the exception state first, and restores
189+
it before returning.
179190
180191
.. versionadded:: 3.12

Doc/distributing/index.rst

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,7 @@ Key terms
3939
developers and documentation authors responsible for the maintenance and
4040
evolution of the standard packaging tools and the associated metadata and
4141
file format standards. They maintain a variety of tools, documentation
42-
and issue trackers on both `GitHub <https://github.com/pypa>`__ and
43-
`Bitbucket <https://bitbucket.org/pypa/>`__.
42+
and issue trackers on `GitHub <https://github.com/pypa>`__.
4443
* ``distutils`` is the original build and distribution system first added
4544
to the Python standard library in 1998. While direct use of ``distutils``
4645
is being phased out, it still laid the foundation for the current packaging

Doc/installing/index.rst

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,7 @@ Key terms
5252
developers and documentation authors responsible for the maintenance and
5353
evolution of the standard packaging tools and the associated metadata and
5454
file format standards. They maintain a variety of tools, documentation,
55-
and issue trackers on both `GitHub <https://github.com/pypa>`__ and
56-
`Bitbucket <https://bitbucket.org/pypa/>`__.
55+
and issue trackers on `GitHub <https://github.com/pypa>`__.
5756
* ``distutils`` is the original build and distribution system first added to
5857
the Python standard library in 1998. While direct use of ``distutils`` is
5958
being phased out, it still laid the foundation for the current packaging

Doc/library/argparse.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ around an instance of :class:`argparse.ArgumentParser`. It is a container for
3434
argument specifications and has options that apply to the parser as whole::
3535

3636
parser = argparse.ArgumentParser(
37-
prog = 'ProgramName',
38-
description = 'What the program does',
39-
epilog = 'Text at the bottom of help')
37+
prog='ProgramName',
38+
description='What the program does',
39+
epilog='Text at the bottom of help')
4040

4141
The :meth:`ArgumentParser.add_argument` method attaches individual argument
4242
specifications to the parser. It supports positional arguments, options that

Doc/library/os.rst

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2188,6 +2188,69 @@ features:
21882188
Accepts a :term:`path-like object`.
21892189

21902190

2191+
.. function:: listdrives()
2192+
2193+
Return a list containing the names of drives on a Windows system.
2194+
2195+
A drive name typically looks like ``'C:\\'``. Not every drive name
2196+
will be associated with a volume, and some may be inaccessible for
2197+
a variety of reasons, including permissions, network connectivity
2198+
or missing media. This function does not test for access.
2199+
2200+
May raise :exc:`OSError` if an error occurs collecting the drive
2201+
names.
2202+
2203+
.. audit-event:: os.listdrives "" os.listdrives
2204+
2205+
.. availability:: Windows
2206+
2207+
.. versionadded:: 3.12
2208+
2209+
2210+
.. function:: listmounts(volume)
2211+
2212+
Return a list containing the mount points for a volume on a Windows
2213+
system.
2214+
2215+
*volume* must be represented as a GUID path, like those returned by
2216+
:func:`os.listvolumes`. Volumes may be mounted in multiple locations
2217+
or not at all. In the latter case, the list will be empty. Mount
2218+
points that are not associated with a volume will not be returned by
2219+
this function.
2220+
2221+
The mount points return by this function will be absolute paths, and
2222+
may be longer than the drive name.
2223+
2224+
Raises :exc:`OSError` if the volume is not recognized or if an error
2225+
occurs collecting the paths.
2226+
2227+
.. audit-event:: os.listmounts volume os.listmounts
2228+
2229+
.. availability:: Windows
2230+
2231+
.. versionadded:: 3.12
2232+
2233+
2234+
.. function:: listvolumes()
2235+
2236+
Return a list containing the volumes in the system.
2237+
2238+
Volumes are typically represented as a GUID path that looks like
2239+
``\\?\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\``. Files can
2240+
usually be accessed through a GUID path, permissions allowing.
2241+
However, users are generally not familiar with them, and so the
2242+
recommended use of this function is to retrieve mount points
2243+
using :func:`os.listmounts`.
2244+
2245+
May raise :exc:`OSError` if an error occurs collecting the volumes.
2246+
2247+
.. audit-event:: os.listvolumes "" os.listvolumes
2248+
2249+
.. availability:: Windows
2250+
2251+
.. versionadded:: 3.12
2252+
2253+
21912254
.. function:: lstat(path, *, dir_fd=None)
21922255

21932256
Perform the equivalent of an :c:func:`lstat` system call on the given path.

Doc/library/pathlib.rst

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,9 @@ we also call *flavours*:
105105
PurePosixPath('setup.py')
106106

107107
Each element of *pathsegments* can be either a string representing a
108-
path segment, an object implementing the :class:`os.PathLike` interface
109-
which returns a string, or another path object::
108+
path segment, or an object implementing the :class:`os.PathLike` interface
109+
where the :meth:`~os.PathLike.__fspath__` method returns a string,
110+
such as another path object::
110111

111112
>>> PurePath('foo', 'some/path', 'bar')
112113
PurePosixPath('foo/some/path/bar')

Doc/library/stdtypes.rst

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -530,12 +530,14 @@ class`. In addition, it provides a few more methods:
530530
is ``False``.
531531

532532
The default values can be used to conveniently turn an integer into a
533-
single byte object. However, when using the default arguments, don't try
534-
to convert a value greater than 255 or you'll get an :exc:`OverflowError`::
533+
single byte object::
535534

536535
>>> (65).to_bytes()
537536
b'A'
538537

538+
However, when using the default arguments, don't try
539+
to convert a value greater than 255 or you'll get an :exc:`OverflowError`.
540+
539541
Equivalent to::
540542

541543
def to_bytes(n, length=1, byteorder='big', signed=False):

Doc/library/test.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -540,7 +540,7 @@ The :mod:`test.support` module defines the following functions:
540540

541541
Get size of a page in bytes.
542542

543-
.. versionadded:: 3.12
543+
.. versionadded:: 3.12
544544

545545

546546
.. function:: setswitchinterval(interval)

Doc/library/threading.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ The instance's values will be different for separate threads.
272272
A class that represents thread-local data.
273273

274274
For more details and extensive examples, see the documentation string of the
275-
:mod:`_threading_local` module.
275+
:mod:`_threading_local` module: :source:`Lib/_threading_local.py`.
276276

277277

278278
.. _thread-objects:

Doc/library/venv.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,7 @@ subclass which installs setuptools and pip into a created virtual environment::
478478
:param context: The information for the virtual environment
479479
creation request being processed.
480480
"""
481-
url = 'https://bitbucket.org/pypa/setuptools/downloads/ez_setup.py'
481+
url = "https://bootstrap.pypa.io/ez_setup.py"
482482
self.install_script(context, 'setuptools', url)
483483
# clear up the setuptools archive which gets downloaded
484484
pred = lambda o: o.startswith('setuptools-') and o.endswith('.tar.gz')

Doc/library/zipapp.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ using the :func:`create_archive` function::
215215
>>> import zipapp
216216
>>> zipapp.create_archive('old_archive.pyz', 'new_archive.pyz', '/usr/bin/python3')
217217

218-
To update the file in place, do the replacement in memory using a :class:`BytesIO`
218+
To update the file in place, do the replacement in memory using a :class:`~io.BytesIO`
219219
object, and then overwrite the source afterwards. Note that there is a risk
220220
when overwriting a file in place that an error will result in the loss of
221221
the original file. This code does not protect against such errors, but

Doc/library/zipfile.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ ZipFile Objects
288288
(``ZipExtFile``) is read-only and provides the following methods:
289289
:meth:`~io.BufferedIOBase.read`, :meth:`~io.IOBase.readline`,
290290
:meth:`~io.IOBase.readlines`, :meth:`~io.IOBase.seek`,
291-
:meth:`~io.IOBase.tell`, :meth:`__iter__`, :meth:`~iterator.__next__`.
291+
:meth:`~io.IOBase.tell`, :meth:`~container.__iter__`, :meth:`~iterator.__next__`.
292292
These objects can operate independently of the ZipFile.
293293

294294
With ``mode='w'``, a writable file handle is returned, which supports the

Doc/tools/extensions/c_annotations.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from docutils.parsers.rst import directives
2525
from docutils.parsers.rst import Directive
2626
from docutils.statemachine import StringList
27+
from sphinx.locale import _ as sphinx_gettext
2728
import csv
2829

2930
from sphinx import addnodes
@@ -168,11 +169,11 @@ def add_annotations(self, app, doctree):
168169
elif not entry.result_type.endswith("Object*"):
169170
continue
170171
if entry.result_refs is None:
171-
rc = 'Return value: Always NULL.'
172+
rc = sphinx_gettext('Return value: Always NULL.')
172173
elif entry.result_refs:
173-
rc = 'Return value: New reference.'
174+
rc = sphinx_gettext('Return value: New reference.')
174175
else:
175-
rc = 'Return value: Borrowed reference.'
176+
rc = sphinx_gettext('Return value: Borrowed reference.')
176177
node.insert(0, nodes.emphasis(rc, rc, classes=['refcount']))
177178

178179

Doc/tools/templates/dummy.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@
77
{% trans %}Deprecated since version {deprecated}, will be removed in version {removed}{% endtrans %}
88
{% trans %}Deprecated since version {deprecated}, removed in version {removed}{% endtrans %}
99

10+
In extensions/c_annotations.py:
11+
12+
{% trans %}Return value: Always NULL.{% endtrans %}
13+
{% trans %}Return value: New reference.{% endtrans %}
14+
{% trans %}Return value: Borrowed reference.{% endtrans %}
1015

1116
In docsbuild-scripts, when rewriting indexsidebar.html with actual versions:
1217

Doc/using/configure.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,11 @@ also be used to improve performance.
326326

327327
Enable C-level code profiling with ``gprof`` (disabled by default).
328328

329+
.. cmdoption:: --with-strict-overflow
330+
331+
Add ``-fstrict-overflow`` to the C compiler flags (by default we add
332+
``-fno-strict-overflow`` instead).
333+
329334

330335
.. _debug-build:
331336

0 commit comments

Comments
 (0)