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

Skip to content

Commit d0da047

Browse files
authored
Merge branch 'main' into buffered-gzip-writes
2 parents a7efd1b + 3ba7743 commit d0da047

97 files changed

Lines changed: 1648 additions & 1084 deletions

File tree

Some content is hidden

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

.github/workflows/build.yml

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -154,15 +154,25 @@ jobs:
154154
needs: check_source
155155
if: needs.check_source.outputs.run_tests == 'true'
156156
env:
157+
HOMEBREW_NO_ANALYTICS: 1
158+
HOMEBREW_NO_AUTO_UPDATE: 1
159+
HOMEBREW_NO_INSTALL_CLEANUP: 1
157160
PYTHONSTRICTEXTENSIONBUILD: 1
158161
steps:
159162
- uses: actions/checkout@v3
160-
- name: Prepare homebrew environment variables
163+
- name: Install Homebrew dependencies
164+
run: brew install pkg-config [email protected] xz gdbm tcl-tk
165+
- name: Prepare Homebrew environment variables
161166
run: |
162-
echo "LDFLAGS=-L$(brew --prefix tcl-tk)/lib" >> $GITHUB_ENV
167+
echo "CFLAGS=-I$(brew --prefix gdbm)/include -I$(brew --prefix xz)/include" >> $GITHUB_ENV
168+
echo "LDFLAGS=-L$(brew --prefix gdbm)/lib -I$(brew --prefix xz)/lib" >> $GITHUB_ENV
163169
echo "PKG_CONFIG_PATH=$(brew --prefix [email protected])/lib/pkgconfig:$(brew --prefix tcl-tk)/lib/pkgconfig" >> $GITHUB_ENV
164170
- name: Configure CPython
165-
run: ./configure --with-pydebug --prefix=/opt/python-dev
171+
run: |
172+
./configure \
173+
--with-pydebug \
174+
--prefix=/opt/python-dev \
175+
--with-openssl="$(brew --prefix [email protected])"
166176
- name: Build CPython
167177
run: make -j4
168178
- name: Display build info

Doc/c-api/exceptions.rst

Lines changed: 40 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -402,58 +402,45 @@ Querying the error indicator
402402
403403
.. c:function:: PyObject *PyErr_GetRaisedException(void)
404404
405-
Returns the exception currently being raised, clearing the exception at
406-
the same time. Do not confuse this with the exception currently being
407-
handled which can be accessed with :c:func:`PyErr_GetHandledException`.
405+
Return the exception currently being raised, clearing the error indicator at
406+
the same time.
408407
409-
.. note::
408+
This function is used by code that needs to catch exceptions,
409+
or code that needs to save and restore the error indicator temporarily.
410410
411-
This function is normally only used by code that needs to catch exceptions or
412-
by code that needs to save and restore the error indicator temporarily, e.g.::
411+
For example::
413412
414-
{
415-
PyObject *exc = PyErr_GetRaisedException();
413+
{
414+
PyObject *exc = PyErr_GetRaisedException();
416415
417-
/* ... code that might produce other errors ... */
416+
/* ... code that might produce other errors ... */
418417
419-
PyErr_SetRaisedException(exc);
420-
}
418+
PyErr_SetRaisedException(exc);
419+
}
420+
421+
.. seealso:: :c:func:`PyErr_GetHandledException`,
422+
to save the exception currently being handled.
421423
422424
.. versionadded:: 3.12
423425
424426
425427
.. c:function:: void PyErr_SetRaisedException(PyObject *exc)
426428
427-
Sets the exception currently being raised ``exc``.
428-
If the exception is already set, it is cleared first.
429-
430-
``exc`` must be a valid exception.
431-
(Violating this rules will cause subtle problems later.)
432-
This call consumes a reference to the ``exc`` object: you must own a
433-
reference to that object before the call and after the call you no longer own
434-
that reference.
435-
(If you don't understand this, don't use this function. I warned you.)
429+
Set *exc* as the exception currently being raised,
430+
clearing the existing exception if one is set.
436431
437-
.. note::
432+
.. warning::
438433
439-
This function is normally only used by code that needs to save and restore the
440-
error indicator temporarily. Use :c:func:`PyErr_GetRaisedException` to save
441-
the current exception, e.g.::
442-
443-
{
444-
PyObject *exc = PyErr_GetRaisedException();
445-
446-
/* ... code that might produce other errors ... */
447-
448-
PyErr_SetRaisedException(exc);
449-
}
434+
This call steals a reference to *exc*, which must be a valid exception.
450435
451436
.. versionadded:: 3.12
452437
453438
454439
.. c:function:: void PyErr_Fetch(PyObject **ptype, PyObject **pvalue, PyObject **ptraceback)
455440
456-
As of 3.12, this function is deprecated. Use :c:func:`PyErr_GetRaisedException` instead.
441+
.. deprecated:: 3.12
442+
443+
Use :c:func:`PyErr_GetRaisedException` instead.
457444
458445
Retrieve the error indicator into three variables whose addresses are passed.
459446
If the error indicator is not set, set all three variables to ``NULL``. If it is
@@ -462,8 +449,10 @@ Querying the error indicator
462449
463450
.. note::
464451
465-
This function is normally only used by code that needs to catch exceptions or
466-
by code that needs to save and restore the error indicator temporarily, e.g.::
452+
This function is normally only used by legacy code that needs to catch
453+
exceptions or save and restore the error indicator temporarily.
454+
455+
For example::
467456
468457
{
469458
PyObject *type, *value, *traceback;
@@ -474,15 +463,17 @@ Querying the error indicator
474463
PyErr_Restore(type, value, traceback);
475464
}
476465
477-
.. deprecated:: 3.12
478-
479466
480467
.. c:function:: void PyErr_Restore(PyObject *type, PyObject *value, PyObject *traceback)
481468
482-
As of 3.12, this function is deprecated. Use :c:func:`PyErr_SetRaisedException` instead.
469+
.. deprecated:: 3.12
470+
471+
Use :c:func:`PyErr_SetRaisedException` instead.
483472
484-
Set the error indicator from the three objects. If the error indicator is
485-
already set, it is cleared first. If the objects are ``NULL``, the error
473+
Set the error indicator from the three objects,
474+
*type*, *value*, and *traceback*,
475+
clearing the existing exception if one is set.
476+
If the objects are ``NULL``, the error
486477
indicator is cleared. Do not pass a ``NULL`` type and non-``NULL`` value or
487478
traceback. The exception type should be a class. Do not pass an invalid
488479
exception type or value. (Violating these rules will cause subtle problems
@@ -493,18 +484,17 @@ Querying the error indicator
493484
494485
.. note::
495486
496-
This function is normally only used by code that needs to save and restore the
497-
error indicator temporarily. Use :c:func:`PyErr_Fetch` to save the current
498-
error indicator.
499-
500-
.. deprecated:: 3.12
487+
This function is normally only used by legacy code that needs to
488+
save and restore the error indicator temporarily.
489+
Use :c:func:`PyErr_Fetch` to save the current error indicator.
501490
502491
503492
.. c:function:: void PyErr_NormalizeException(PyObject **exc, PyObject **val, PyObject **tb)
504493
505-
As of 3.12, this function is deprecated.
506-
Use :c:func:`PyErr_GetRaisedException` instead of :c:func:`PyErr_Fetch` to avoid
507-
any possible de-normalization.
494+
.. deprecated:: 3.12
495+
496+
Use :c:func:`PyErr_GetRaisedException` instead,
497+
to avoid any possible de-normalization.
508498
509499
Under certain circumstances, the values returned by :c:func:`PyErr_Fetch` below
510500
can be "unnormalized", meaning that ``*exc`` is a class object but ``*val`` is
@@ -522,8 +512,6 @@ Querying the error indicator
522512
PyException_SetTraceback(val, tb);
523513
}
524514
525-
.. deprecated:: 3.12
526-
527515
528516
.. c:function:: PyObject* PyErr_GetHandledException(void)
529517
@@ -771,14 +759,12 @@ Exception Objects
771759
772760
.. c:function:: PyObject* PyException_GetArgs(PyObject *ex)
773761
774-
Return args of the given exception as a new reference,
775-
as accessible from Python through :attr:`args`.
762+
Return :attr:`~BaseException.args` of exception *ex*.
776763
777764
778765
.. c:function:: void PyException_SetArgs(PyObject *ex, PyObject *args)
779766
780-
Set the args of the given exception,
781-
as accessible from Python through :attr:`args`.
767+
Set :attr:`~BaseException.args` of exception *ex* to *args*.
782768
783769
784770
.. _unicodeexceptions:

Doc/data/refcounts.dat

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -606,6 +606,9 @@ PyErr_GetExcInfo:PyObject**:ptype:+1:
606606
PyErr_GetExcInfo:PyObject**:pvalue:+1:
607607
PyErr_GetExcInfo:PyObject**:ptraceback:+1:
608608

609+
PyErr_GetRaisedException:PyObject*::+1:
610+
PyErr_SetRaisedException::::
611+
609612
PyErr_GivenExceptionMatches:int:::
610613
PyErr_GivenExceptionMatches:PyObject*:given:0:
611614
PyErr_GivenExceptionMatches:PyObject*:exc:0:
@@ -836,6 +839,8 @@ PyEval_EvalFrameEx:int:throwflag::
836839
PyEval_MergeCompilerFlags:int:::
837840
PyEval_MergeCompilerFlags:PyCompilerFlags*:cf::
838841

842+
PyException_GetArgs:PyObject*::+1:
843+
839844
PyException_GetCause:PyObject*::+1:
840845
PyException_GetCause:PyObject*:ex:0:
841846

Doc/library/argparse.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1867,7 +1867,7 @@ Sub-commands
18671867
...
18681868
>>> # create the top-level parser
18691869
>>> parser = argparse.ArgumentParser()
1870-
>>> subparsers = parser.add_subparsers()
1870+
>>> subparsers = parser.add_subparsers(required=True)
18711871
>>>
18721872
>>> # create the parser for the "foo" command
18731873
>>> parser_foo = subparsers.add_parser('foo')

Doc/library/cmath.rst

Lines changed: 38 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,27 @@ the function is then applied to the result of the conversion.
1515

1616
.. note::
1717

18-
On platforms with hardware and system-level support for signed
19-
zeros, functions involving branch cuts are continuous on *both*
20-
sides of the branch cut: the sign of the zero distinguishes one
21-
side of the branch cut from the other. On platforms that do not
22-
support signed zeros the continuity is as specified below.
18+
For functions involving branch cuts, we have the problem of deciding how to
19+
define those functions on the cut itself. Following Kahan's "Branch cuts for
20+
complex elementary functions" paper, as well as Annex G of C99 and later C
21+
standards, we use the sign of zero to distinguish one side of the branch cut
22+
from the other: for a branch cut along (a portion of) the real axis we look
23+
at the sign of the imaginary part, while for a branch cut along the
24+
imaginary axis we look at the sign of the real part.
25+
26+
For example, the :func:`cmath.sqrt` function has a branch cut along the
27+
negative real axis. An argument of ``complex(-2.0, -0.0)`` is treated as
28+
though it lies *below* the branch cut, and so gives a result on the negative
29+
imaginary axis::
30+
31+
>>> cmath.sqrt(complex(-2.0, -0.0))
32+
-1.4142135623730951j
33+
34+
But an argument of ``complex(-2.0, 0.0)`` is treated as though it lies above
35+
the branch cut::
36+
37+
>>> cmath.sqrt(complex(-2.0, 0.0))
38+
1.4142135623730951j
2339

2440

2541
Conversions to and from polar coordinates
@@ -44,14 +60,11 @@ rectangular coordinates to polar coordinates and back.
4460

4561
.. function:: phase(x)
4662

47-
Return the phase of *x* (also known as the *argument* of *x*), as a
48-
float. ``phase(x)`` is equivalent to ``math.atan2(x.imag,
49-
x.real)``. The result lies in the range [-\ *π*, *π*], and the branch
50-
cut for this operation lies along the negative real axis,
51-
continuous from above. On systems with support for signed zeros
52-
(which includes most systems in current use), this means that the
53-
sign of the result is the same as the sign of ``x.imag``, even when
54-
``x.imag`` is zero::
63+
Return the phase of *x* (also known as the *argument* of *x*), as a float.
64+
``phase(x)`` is equivalent to ``math.atan2(x.imag, x.real)``. The result
65+
lies in the range [-\ *π*, *π*], and the branch cut for this operation lies
66+
along the negative real axis. The sign of the result is the same as the
67+
sign of ``x.imag``, even when ``x.imag`` is zero::
5568

5669
>>> phase(complex(-1.0, 0.0))
5770
3.141592653589793
@@ -92,8 +105,8 @@ Power and logarithmic functions
92105
.. function:: log(x[, base])
93106

94107
Returns the logarithm of *x* to the given *base*. If the *base* is not
95-
specified, returns the natural logarithm of *x*. There is one branch cut, from 0
96-
along the negative real axis to -∞, continuous from above.
108+
specified, returns the natural logarithm of *x*. There is one branch cut,
109+
from 0 along the negative real axis to -∞.
97110

98111

99112
.. function:: log10(x)
@@ -112,9 +125,9 @@ Trigonometric functions
112125

113126
.. function:: acos(x)
114127

115-
Return the arc cosine of *x*. There are two branch cuts: One extends right from
116-
1 along the real axis to ∞, continuous from below. The other extends left from
117-
-1 along the real axis to -∞, continuous from above.
128+
Return the arc cosine of *x*. There are two branch cuts: One extends right
129+
from 1 along the real axis to ∞. The other extends left from -1 along the
130+
real axis to -∞.
118131

119132

120133
.. function:: asin(x)
@@ -125,9 +138,8 @@ Trigonometric functions
125138
.. function:: atan(x)
126139

127140
Return the arc tangent of *x*. There are two branch cuts: One extends from
128-
``1j`` along the imaginary axis to ``∞j``, continuous from the right. The
129-
other extends from ``-1j`` along the imaginary axis to ``-∞j``, continuous
130-
from the left.
141+
``1j`` along the imaginary axis to ``∞j``. The other extends from ``-1j``
142+
along the imaginary axis to ``-∞j``.
131143

132144

133145
.. function:: cos(x)
@@ -151,23 +163,21 @@ Hyperbolic functions
151163
.. function:: acosh(x)
152164

153165
Return the inverse hyperbolic cosine of *x*. There is one branch cut,
154-
extending left from 1 along the real axis to -∞, continuous from above.
166+
extending left from 1 along the real axis to -∞.
155167

156168

157169
.. function:: asinh(x)
158170

159171
Return the inverse hyperbolic sine of *x*. There are two branch cuts:
160-
One extends from ``1j`` along the imaginary axis to ``∞j``,
161-
continuous from the right. The other extends from ``-1j`` along
162-
the imaginary axis to ``-∞j``, continuous from the left.
172+
One extends from ``1j`` along the imaginary axis to ``∞j``. The other
173+
extends from ``-1j`` along the imaginary axis to ``-∞j``.
163174

164175

165176
.. function:: atanh(x)
166177

167178
Return the inverse hyperbolic tangent of *x*. There are two branch cuts: One
168-
extends from ``1`` along the real axis to ````, continuous from below. The
169-
other extends from ``-1`` along the real axis to ``-∞``, continuous from
170-
above.
179+
extends from ``1`` along the real axis to ````. The other extends from
180+
``-1`` along the real axis to ``-∞``.
171181

172182

173183
.. function:: cosh(x)

Doc/library/csv.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,7 @@ Reader objects have the following public attributes:
458458

459459
DictReader objects have the following public attribute:
460460

461-
.. attribute:: csvreader.fieldnames
461+
.. attribute:: DictReader.fieldnames
462462

463463
If not passed as a parameter when creating the object, this attribute is
464464
initialized upon first access or when the first record is read from the

Doc/library/exceptions.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ The following exceptions are used mostly as base classes for other exceptions.
123123
try:
124124
...
125125
except SomeException:
126-
tb = sys.exc_info()[2]
126+
tb = sys.exception().__traceback__
127127
raise OtherException(...).with_traceback(tb)
128128

129129
.. method:: add_note(note)

Doc/library/functions.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1635,6 +1635,9 @@ are always available. They are listed here in alphabetical order.
16351635
example: ``a[start:stop:step]`` or ``a[start:stop, i]``. See
16361636
:func:`itertools.islice` for an alternate version that returns an iterator.
16371637

1638+
.. versionchanged:: 3.12
1639+
Slice objects are now :term:`hashable` (provided :attr:`~slice.start`,
1640+
:attr:`~slice.stop`, and :attr:`~slice.step` are hashable).
16381641

16391642
.. function:: sorted(iterable, /, *, key=None, reverse=False)
16401643

Doc/library/importlib.resources.abc.rst

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,12 @@
8989

9090
.. class:: Traversable
9191

92-
An object with a subset of pathlib.Path methods suitable for
92+
An object with a subset of :class:`pathlib.Path` methods suitable for
9393
traversing directories and opening files.
9494

95+
For a representation of the object on the file-system, use
96+
:meth:`importlib.resources.as_file`.
97+
9598
.. versionadded:: 3.9
9699

97100
.. deprecated-removed:: 3.12 3.14

Doc/library/queue.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ The :mod:`queue` module defines the following classes and exceptions:
5757
*maxsize* is less than or equal to zero, the queue size is infinite.
5858

5959
The lowest valued entries are retrieved first (the lowest valued entry is the
60-
one returned by ``sorted(list(entries))[0]``). A typical pattern for entries
61-
is a tuple in the form: ``(priority_number, data)``.
60+
one that would be returned by ``min(entries)``). A typical pattern for
61+
entries is a tuple in the form: ``(priority_number, data)``.
6262

6363
If the *data* elements are not comparable, the data can be wrapped in a class
6464
that ignores the data item and only compares the priority number::

0 commit comments

Comments
 (0)