Skip to content

Commit 1a8f4a0

Browse files
committed
Merge branch 'main' into inlinecomp2
* main: (34 commits) pythongh-102701: Fix overflow in dictobject.c (pythonGH-102750) pythonGH-78530: add support for generators in `asyncio.wait` (python#102761) Increase stack reserve size for Windows debug builds to avoid test crashes (pythonGH-102764) pythongh-102755: Add PyErr_DisplayException(exc) (python#102756) Fix outdated note about 'int' rounding or truncating (python#102736) pythongh-102192: Replace PyErr_Fetch/Restore etc by more efficient alternatives (python#102760) pythongh-99726: Improves correctness of stat results for Windows, and uses faster API when available (pythonGH-102149) pythongh-102192: remove redundant exception fields from ssl module socket (python#102466) pythongh-102192: Replace PyErr_Fetch/Restore etc by more efficient alternatives (python#102743) pythongh-102737: Un-ignore ceval.c in the CI globals check (pythongh-102745) pythonGH-102748: remove legacy support for generator based coroutines from `asyncio.iscoroutine` (python#102749) pythongh-102721: Improve coverage of `_collections_abc._CallableGenericAlias` (python#102722) pythonGH-102653: Make recipe docstring show the correct distribution (python#102742) Add comments to `{typing,_collections_abc}._type_repr` about each other (python#102752) pythongh-102594: PyErr_SetObject adds note to exception raised on normalization error (python#102675) pythongh-94440: Fix issue of ProcessPoolExecutor shutdown hanging (python#94468) pythonGH-100112: avoid using iterable coroutines in asyncio internally (python#100128) pythongh-102690: Use Edge as fallback in webbrowser instead of IE (python#102691) pythongh-102660: Fix Refleaks in import.c (python#102744) pythongh-102738: remove from cases generator the code related to register instructions (python#102739) ...
2 parents 6c5f269 + 65fb7c4 commit 1a8f4a0

File tree

79 files changed

+1910
-817
lines changed

Some content is hidden

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

79 files changed

+1910
-817
lines changed

Doc/c-api/exceptions.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,12 @@ Printing and clearing
8686
8787
An exception must be set when calling this function.
8888
89+
.. c:function: void PyErr_DisplayException(PyObject *exc)
90+
91+
Print the standard traceback display of ``exc`` to ``sys.stderr``, including
92+
chained exceptions and notes.
93+
94+
.. versionadded:: 3.12
8995
9096
Raising exceptions
9197
==================

Doc/c-api/init.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -513,7 +513,7 @@ Process-wide parameters
513513
program name is ``'/usr/local/bin/python'``, the prefix is ``'/usr/local'``. The
514514
returned string points into static storage; the caller should not modify its
515515
value. This corresponds to the :makevar:`prefix` variable in the top-level
516-
:file:`Makefile` and the ``--prefix`` argument to the :program:`configure`
516+
:file:`Makefile` and the :option:`--prefix` argument to the :program:`configure`
517517
script at build time. The value is available to Python code as ``sys.prefix``.
518518
It is only useful on Unix. See also the next function.
519519

Doc/c-api/intro.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,19 +78,19 @@ used by extension writers. Structure member names do not have a reserved prefix.
7878

7979
The header files are typically installed with Python. On Unix, these are
8080
located in the directories :file:`{prefix}/include/pythonversion/` and
81-
:file:`{exec_prefix}/include/pythonversion/`, where :envvar:`prefix` and
82-
:envvar:`exec_prefix` are defined by the corresponding parameters to Python's
81+
:file:`{exec_prefix}/include/pythonversion/`, where :option:`prefix <--prefix>` and
82+
:option:`exec_prefix <--exec-prefix>` are defined by the corresponding parameters to Python's
8383
:program:`configure` script and *version* is
8484
``'%d.%d' % sys.version_info[:2]``. On Windows, the headers are installed
85-
in :file:`{prefix}/include`, where :envvar:`prefix` is the installation
85+
in :file:`{prefix}/include`, where ``prefix`` is the installation
8686
directory specified to the installer.
8787

8888
To include the headers, place both directories (if different) on your compiler's
8989
search path for includes. Do *not* place the parent directories on the search
9090
path and then use ``#include <pythonX.Y/Python.h>``; this will break on
9191
multi-platform builds since the platform independent headers under
92-
:envvar:`prefix` include the platform specific headers from
93-
:envvar:`exec_prefix`.
92+
:option:`prefix <--prefix>` include the platform specific headers from
93+
:option:`exec_prefix <--exec-prefix>`.
9494

9595
C++ users should note that although the API is defined entirely using C, the
9696
header files properly declare the entry points to be ``extern "C"``. As a result,

Doc/data/stable_abi.dat

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Doc/library/asyncio-task.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -804,6 +804,10 @@ Waiting Primitives
804804
.. versionchanged:: 3.11
805805
Passing coroutine objects to ``wait()`` directly is forbidden.
806806

807+
.. versionchanged:: 3.12
808+
Added support for generators yielding tasks.
809+
810+
807811
.. function:: as_completed(aws, *, timeout=None)
808812

809813
Run :ref:`awaitable objects <asyncio-awaitables>` in the *aws*

Doc/library/os.rst

Lines changed: 65 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2858,6 +2858,12 @@ features:
28582858
Added support for the :class:`~os.PathLike` interface. Added support
28592859
for :class:`bytes` paths on Windows.
28602860

2861+
.. versionchanged:: 3.12
2862+
The ``st_ctime`` attribute of a stat result is deprecated on Windows.
2863+
The file creation time is properly available as ``st_birthtime``, and
2864+
in the future ``st_ctime`` may be changed to return zero or the
2865+
metadata change time, if available.
2866+
28612867

28622868
.. function:: stat(path, *, dir_fd=None, follow_symlinks=True)
28632869

@@ -2973,10 +2979,12 @@ features:
29732979

29742980
.. attribute:: st_ctime
29752981

2976-
Platform dependent:
2982+
Time of most recent metadata change expressed in seconds.
29772983

2978-
* the time of most recent metadata change on Unix,
2979-
* the time of creation on Windows, expressed in seconds.
2984+
.. versionchanged:: 3.12
2985+
``st_ctime`` is deprecated on Windows. Use ``st_birthtime`` for
2986+
the file creation time. In the future, ``st_ctime`` will contain
2987+
the time of the most recent metadata change, as for other platforms.
29802988

29812989
.. attribute:: st_atime_ns
29822990

@@ -2989,29 +2997,48 @@ features:
29892997

29902998
.. attribute:: st_ctime_ns
29912999

2992-
Platform dependent:
3000+
Time of most recent metadata change expressed in nanoseconds as an
3001+
integer.
3002+
3003+
.. versionchanged:: 3.12
3004+
``st_ctime_ns`` is deprecated on Windows. Use ``st_birthtime_ns``
3005+
for the file creation time. In the future, ``st_ctime`` will contain
3006+
the time of the most recent metadata change, as for other platforms.
3007+
3008+
.. attribute:: st_birthtime
3009+
3010+
Time of file creation expressed in seconds. This attribute is not
3011+
always available, and may raise :exc:`AttributeError`.
3012+
3013+
.. versionchanged:: 3.12
3014+
``st_birthtime`` is now available on Windows.
3015+
3016+
.. attribute:: st_birthtime_ns
29933017

2994-
* the time of most recent metadata change on Unix,
2995-
* the time of creation on Windows, expressed in nanoseconds as an
2996-
integer.
3018+
Time of file creation expressed in nanoseconds as an integer.
3019+
This attribute is not always available, and may raise
3020+
:exc:`AttributeError`.
3021+
3022+
.. versionadded:: 3.12
29973023

29983024
.. note::
29993025

30003026
The exact meaning and resolution of the :attr:`st_atime`,
3001-
:attr:`st_mtime`, and :attr:`st_ctime` attributes depend on the operating
3002-
system and the file system. For example, on Windows systems using the FAT
3003-
or FAT32 file systems, :attr:`st_mtime` has 2-second resolution, and
3004-
:attr:`st_atime` has only 1-day resolution. See your operating system
3005-
documentation for details.
3027+
:attr:`st_mtime`, :attr:`st_ctime` and :attr:`st_birthtime` attributes
3028+
depend on the operating system and the file system. For example, on
3029+
Windows systems using the FAT32 file systems, :attr:`st_mtime` has
3030+
2-second resolution, and :attr:`st_atime` has only 1-day resolution.
3031+
See your operating system documentation for details.
30063032

30073033
Similarly, although :attr:`st_atime_ns`, :attr:`st_mtime_ns`,
3008-
and :attr:`st_ctime_ns` are always expressed in nanoseconds, many
3009-
systems do not provide nanosecond precision. On systems that do
3010-
provide nanosecond precision, the floating-point object used to
3011-
store :attr:`st_atime`, :attr:`st_mtime`, and :attr:`st_ctime`
3012-
cannot preserve all of it, and as such will be slightly inexact.
3013-
If you need the exact timestamps you should always use
3014-
:attr:`st_atime_ns`, :attr:`st_mtime_ns`, and :attr:`st_ctime_ns`.
3034+
:attr:`st_ctime_ns` and :attr:`st_birthtime_ns` are always expressed in
3035+
nanoseconds, many systems do not provide nanosecond precision. On
3036+
systems that do provide nanosecond precision, the floating-point object
3037+
used to store :attr:`st_atime`, :attr:`st_mtime`, :attr:`st_ctime` and
3038+
:attr:`st_birthtime` cannot preserve all of it, and as such will be
3039+
slightly inexact. If you need the exact timestamps you should always use
3040+
:attr:`st_atime_ns`, :attr:`st_mtime_ns`, :attr:`st_ctime_ns` and
3041+
:attr:`st_birthtime_ns`.
30153042

30163043
On some Unix systems (such as Linux), the following attributes may also be
30173044
available:
@@ -3041,10 +3068,6 @@ features:
30413068

30423069
File generation number.
30433070

3044-
.. attribute:: st_birthtime
3045-
3046-
Time of file creation.
3047-
30483071
On Solaris and derivatives, the following attributes may also be
30493072
available:
30503073

@@ -3117,6 +3140,25 @@ features:
31173140
files as :const:`S_IFCHR`, :const:`S_IFIFO` or :const:`S_IFBLK`
31183141
as appropriate.
31193142

3143+
.. versionchanged:: 3.12
3144+
On Windows, :attr:`st_ctime` is deprecated. Eventually, it will
3145+
contain the last metadata change time, for consistency with other
3146+
platforms, but for now still contains creation time.
3147+
Use :attr:`st_birthtime` for the creation time.
3148+
3149+
.. versionchanged:: 3.12
3150+
On Windows, :attr:`st_ino` may now be up to 128 bits, depending
3151+
on the file system. Previously it would not be above 64 bits, and
3152+
larger file identifiers would be arbitrarily packed.
3153+
3154+
.. versionchanged:: 3.12
3155+
On Windows, :attr:`st_rdev` no longer returns a value. Previously
3156+
it would contain the same as :attr:`st_dev`, which was incorrect.
3157+
3158+
.. versionadded:: 3.12
3159+
Added the :attr:`st_birthtime` member on Windows.
3160+
3161+
31203162
.. function:: statvfs(path)
31213163

31223164
Perform a :c:func:`statvfs` system call on the given path. The return value is

Doc/library/random.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,8 @@ from the combinatoric iterators in the :mod:`itertools` module:
610610
return tuple(pool[i] for i in indices)
611611

612612
def random_combination_with_replacement(iterable, r):
613-
"Random selection from itertools.combinations_with_replacement(iterable, r)"
613+
"Choose r elements with replacement. Order the result to match the iterable."
614+
# Result will be in set(itertools.combinations_with_replacement(iterable, r)).
614615
pool = tuple(iterable)
615616
n = len(pool)
616617
indices = sorted(random.choices(range(n), k=r))

Doc/library/stdtypes.rst

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -335,11 +335,10 @@ Notes:
335335
single: ceil() (in module math)
336336
single: trunc() (in module math)
337337
pair: numeric; conversions
338-
pair: C; language
339338

340-
Conversion from floating point to integer may round or truncate
341-
as in C; see functions :func:`math.floor` and :func:`math.ceil` for
342-
well-defined conversions.
339+
Conversion from :class:`float` to :class:`int` truncates, discarding the
340+
fractional part. See functions :func:`math.floor` and :func:`math.ceil` for
341+
alternative conversions.
343342

344343
(4)
345344
float also accepts the strings "nan" and "inf" with an optional prefix "+"

Doc/library/sys.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1323,7 +1323,7 @@ always available.
13231323

13241324
A string giving the site-specific directory prefix where the platform
13251325
independent Python files are installed; on Unix, the default is
1326-
``'/usr/local'``. This can be set at build time with the ``--prefix``
1326+
:file:`/usr/local`. This can be set at build time with the :option:`--prefix`
13271327
argument to the :program:`configure` script. See
13281328
:ref:`installation_paths` for derived paths.
13291329

Doc/library/venv.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ running from a virtual environment.
6161
A virtual environment may be "activated" using a script in its binary directory
6262
(``bin`` on POSIX; ``Scripts`` on Windows).
6363
This will prepend that directory to your :envvar:`!PATH`, so that running
64-
:program:`!python` will invoke the environment's Python interpreter
64+
:program:`python` will invoke the environment's Python interpreter
6565
and you can run installed scripts without having to use their full path.
6666
The invocation of the activation script is platform-specific
6767
(:samp:`{<venv>}` must be replaced by the path to the directory
@@ -84,7 +84,7 @@ containing the virtual environment):
8484
+-------------+------------+--------------------------------------------------+
8585

8686
.. versionadded:: 3.4
87-
:program:`!fish` and :program:`!csh` activation scripts.
87+
:program:`fish` and :program:`csh` activation scripts.
8888

8989
.. versionadded:: 3.8
9090
PowerShell activation scripts installed under POSIX for PowerShell Core

0 commit comments

Comments
 (0)