Skip to content

Commit 96aaf43

Browse files
committed
Revert " Merged main into regmachine branch (#50)"
This reverts commit fdc73cb.
1 parent fdc73cb commit 96aaf43

File tree

160 files changed

+1744
-2564
lines changed

Some content is hidden

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

160 files changed

+1744
-2564
lines changed

.github/workflows/build.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ jobs:
235235
strategy:
236236
fail-fast: false
237237
matrix:
238-
openssl_ver: [1.1.1s, 3.0.7, 3.1.0-beta1]
238+
openssl_ver: [1.1.1s, 3.0.7]
239239
env:
240240
OPENSSL_VER: ${{ matrix.openssl_ver }}
241241
MULTISSL_DIR: ${{ github.workspace }}/multissl

.github/workflows/doc.yml

+10
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,18 @@ jobs:
5050
run: make -C Doc/ venv
5151
- name: 'Check documentation'
5252
run: make -C Doc/ check
53+
- name: 'Upload NEWS'
54+
uses: actions/upload-artifact@v3
55+
with:
56+
name: NEWS
57+
path: Doc/build/NEWS
5358
- name: 'Build HTML documentation'
5459
run: make -C Doc/ SPHINXOPTS="-q" SPHINXERRORHANDLING="-W --keep-going" html
60+
- name: 'Upload docs'
61+
uses: actions/upload-artifact@v3
62+
with:
63+
name: doc-html
64+
path: Doc/build/html
5565

5666
# Run "doctest" on HEAD as new syntax doesn't exist in the latest stable release
5767
doctest:

Doc/c-api/arg.rst

+19-35
Original file line numberDiff line numberDiff line change
@@ -34,39 +34,24 @@ These formats allow accessing an object as a contiguous chunk of memory.
3434
You don't have to provide raw storage for the returned unicode or bytes
3535
area.
3636

37-
Unless otherwise stated, buffers are not NUL-terminated.
38-
39-
There are three ways strings and buffers can be converted to C:
40-
41-
* Formats such as ``y*`` and ``s*`` fill a :c:type:`Py_buffer` structure.
42-
This locks the underlying buffer so that the caller can subsequently use
43-
the buffer even inside a :c:type:`Py_BEGIN_ALLOW_THREADS`
44-
block without the risk of mutable data being resized or destroyed.
45-
As a result, **you have to call** :c:func:`PyBuffer_Release` after you have
46-
finished processing the data (or in any early abort case).
47-
48-
* The ``es``, ``es#``, ``et`` and ``et#`` formats allocate the result buffer.
49-
**You have to call** :c:func:`PyMem_Free` after you have finished
50-
processing the data (or in any early abort case).
37+
In general, when a format sets a pointer to a buffer, the buffer is
38+
managed by the corresponding Python object, and the buffer shares
39+
the lifetime of this object. You won't have to release any memory yourself.
40+
The only exceptions are ``es``, ``es#``, ``et`` and ``et#``.
41+
42+
However, when a :c:type:`Py_buffer` structure gets filled, the underlying
43+
buffer is locked so that the caller can subsequently use the buffer even
44+
inside a :c:type:`Py_BEGIN_ALLOW_THREADS` block without the risk of mutable data
45+
being resized or destroyed. As a result, **you have to call**
46+
:c:func:`PyBuffer_Release` after you have finished processing the data (or
47+
in any early abort case).
5148

52-
* .. _c-arg-borrowed-buffer:
53-
54-
Other formats take a :class:`str` or a read-only :term:`bytes-like object`,
55-
such as :class:`bytes`, and provide a ``const char *`` pointer to
56-
its buffer.
57-
In this case the buffer is "borrowed": it is managed by the corresponding
58-
Python object, and shares the lifetime of this object.
59-
You won't have to release any memory yourself.
60-
61-
To ensure that the underlying buffer may be safely borrowed, the object's
62-
:c:member:`PyBufferProcs.bf_releasebuffer` field must be ``NULL``.
63-
This disallows common mutable objects such as :class:`bytearray`,
64-
but also some read-only objects such as :class:`memoryview` of
65-
:class:`bytes`.
49+
Unless otherwise stated, buffers are not NUL-terminated.
6650

67-
Besides this ``bf_releasebuffer`` requirement, there is no check to verify
68-
whether the input object is immutable (e.g. whether it would honor a request
69-
for a writable buffer, or whether another thread can mutate the data).
51+
Some formats require a read-only :term:`bytes-like object`, and set a
52+
pointer instead of a buffer structure. They work by checking that
53+
the object's :c:member:`PyBufferProcs.bf_releasebuffer` field is ``NULL``,
54+
which disallows mutable objects such as :class:`bytearray`.
7055

7156
.. note::
7257

@@ -104,7 +89,7 @@ There are three ways strings and buffers can be converted to C:
10489
Unicode objects are converted to C strings using ``'utf-8'`` encoding.
10590

10691
``s#`` (:class:`str`, read-only :term:`bytes-like object`) [const char \*, :c:type:`Py_ssize_t`]
107-
Like ``s*``, except that it provides a :ref:`borrowed buffer <c-arg-borrowed-buffer>`.
92+
Like ``s*``, except that it doesn't accept mutable objects.
10893
The result is stored into two C variables,
10994
the first one a pointer to a C string, the second one its length.
11095
The string may contain embedded null bytes. Unicode objects are converted
@@ -123,9 +108,8 @@ There are three ways strings and buffers can be converted to C:
123108
pointer is set to ``NULL``.
124109

125110
``y`` (read-only :term:`bytes-like object`) [const char \*]
126-
This format converts a bytes-like object to a C pointer to a
127-
:ref:`borrowed <c-arg-borrowed-buffer>` character string;
128-
it does not accept Unicode objects. The bytes buffer must not
111+
This format converts a bytes-like object to a C pointer to a character
112+
string; it does not accept Unicode objects. The bytes buffer must not
129113
contain embedded null bytes; if it does, a :exc:`ValueError`
130114
exception is raised.
131115

Doc/faq/programming.rst

-2
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,6 @@ Yes. The coding style required for standard library modules is documented as
113113
Core Language
114114
=============
115115

116-
.. _faq-unboundlocalerror:
117-
118116
Why am I getting an UnboundLocalError when the variable has a value?
119117
--------------------------------------------------------------------
120118

Doc/howto/annotations.rst

-6
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,6 @@ Accessing The Annotations Dict Of An Object In Python 3.10 And Newer
5757
newer is to call :func:`getattr` with three arguments,
5858
for example ``getattr(o, '__annotations__', None)``.
5959

60-
Before Python 3.10, accessing ``__annotations__`` on a class that
61-
defines no annotations but that has a parent class with
62-
annotations would return the parent's ``__annotations__``.
63-
In Python 3.10 and newer, the child class's annotations
64-
will be an empty dict instead.
65-
6660

6761
Accessing The Annotations Dict Of An Object In Python 3.9 And Older
6862
===================================================================

Doc/library/argparse.rst

+6-6
Original file line numberDiff line numberDiff line change
@@ -765,7 +765,7 @@ The add_argument() method
765765

766766
* type_ - The type to which the command-line argument should be converted.
767767

768-
* choices_ - A sequence of the allowable values for the argument.
768+
* choices_ - A container of the allowable values for the argument.
769769

770770
* required_ - Whether or not the command-line option may be omitted
771771
(optionals only).
@@ -1209,7 +1209,7 @@ choices
12091209
^^^^^^^
12101210

12111211
Some command-line arguments should be selected from a restricted set of values.
1212-
These can be handled by passing a sequence object as the *choices* keyword
1212+
These can be handled by passing a container object as the *choices* keyword
12131213
argument to :meth:`~ArgumentParser.add_argument`. When the command line is
12141214
parsed, argument values will be checked, and an error message will be displayed
12151215
if the argument was not one of the acceptable values::
@@ -1223,9 +1223,9 @@ if the argument was not one of the acceptable values::
12231223
game.py: error: argument move: invalid choice: 'fire' (choose from 'rock',
12241224
'paper', 'scissors')
12251225

1226-
Note that inclusion in the *choices* sequence is checked after any type_
1226+
Note that inclusion in the *choices* container is checked after any type_
12271227
conversions have been performed, so the type of the objects in the *choices*
1228-
sequence should match the type_ specified::
1228+
container should match the type_ specified::
12291229

12301230
>>> parser = argparse.ArgumentParser(prog='doors.py')
12311231
>>> parser.add_argument('door', type=int, choices=range(1, 4))
@@ -1235,8 +1235,8 @@ sequence should match the type_ specified::
12351235
usage: doors.py [-h] {1,2,3}
12361236
doors.py: error: argument door: invalid choice: 4 (choose from 1, 2, 3)
12371237

1238-
Any sequence can be passed as the *choices* value, so :class:`list` objects,
1239-
:class:`tuple` objects, and custom sequences are all supported.
1238+
Any container can be passed as the *choices* value, so :class:`list` objects,
1239+
:class:`set` objects, and custom containers are all supported.
12401240

12411241
Use of :class:`enum.Enum` is not recommended because it is difficult to
12421242
control its appearance in usage, help, and error messages.

Doc/library/compileall.rst

+2-2
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ Public functions
199199

200200
The *stripdir*, *prependdir* and *limit_sl_dest* arguments correspond to
201201
the ``-s``, ``-p`` and ``-e`` options described above.
202-
They may be specified as ``str`` or :py:class:`os.PathLike`.
202+
They may be specified as ``str``, ``bytes`` or :py:class:`os.PathLike`.
203203

204204
If *hardlink_dupes* is true and two ``.pyc`` files with different optimization
205205
level have the same content, use hard links to consolidate duplicate files.
@@ -269,7 +269,7 @@ Public functions
269269

270270
The *stripdir*, *prependdir* and *limit_sl_dest* arguments correspond to
271271
the ``-s``, ``-p`` and ``-e`` options described above.
272-
They may be specified as ``str`` or :py:class:`os.PathLike`.
272+
They may be specified as ``str``, ``bytes`` or :py:class:`os.PathLike`.
273273

274274
If *hardlink_dupes* is true and two ``.pyc`` files with different optimization
275275
level have the same content, use hard links to consolidate duplicate files.

Doc/library/contextvars.rst

-5
Original file line numberDiff line numberDiff line change
@@ -144,11 +144,6 @@ Manual Context Management
144144
To get a copy of the current context use the
145145
:func:`~contextvars.copy_context` function.
146146

147-
Every thread will have a different top-level :class:`~contextvars.Context`
148-
object. This means that a :class:`ContextVar` object behaves in a similar
149-
fashion to :func:`threading.local()` when values are assigned in different
150-
threads.
151-
152147
Context implements the :class:`collections.abc.Mapping` interface.
153148

154149
.. method:: run(callable, *args, **kwargs)

Doc/library/functions.rst

+8-15
Original file line numberDiff line numberDiff line change
@@ -650,23 +650,20 @@ are always available. They are listed here in alphabetical order.
650650
sign may be ``'+'`` or ``'-'``; a ``'+'`` sign has no effect on the value
651651
produced. The argument may also be a string representing a NaN
652652
(not-a-number), or positive or negative infinity. More precisely, the
653-
input must conform to the ``floatvalue`` production rule in the following
654-
grammar, after leading and trailing whitespace characters are removed:
653+
input must conform to the following grammar after leading and trailing
654+
whitespace characters are removed:
655655

656656
.. productionlist:: float
657657
sign: "+" | "-"
658658
infinity: "Infinity" | "inf"
659659
nan: "nan"
660-
digitpart: `digit` (["_"] `digit`)*
661-
number: [`digitpart`] "." `digitpart` | `digitpart` ["."]
662-
exponent: ("e" | "E") ["+" | "-"] `digitpart`
663-
floatnumber: number [`exponent`]
664-
floatvalue: [`sign`] (`floatnumber` | `infinity` | `nan`)
660+
numeric_value: `floatnumber` | `infinity` | `nan`
661+
numeric_string: [`sign`] `numeric_value`
665662

666-
Here ``digit`` is a Unicode decimal digit (character in the Unicode general
667-
category ``Nd``). Case is not significant, so, for example, "inf", "Inf",
668-
"INFINITY", and "iNfINity" are all acceptable spellings for positive
669-
infinity.
663+
Here ``floatnumber`` is the form of a Python floating-point literal,
664+
described in :ref:`floating`. Case is not significant, so, for example,
665+
"inf", "Inf", "INFINITY", and "iNfINity" are all acceptable spellings for
666+
positive infinity.
670667

671668
Otherwise, if the argument is an integer or a floating point number, a
672669
floating point number with the same value (within Python's floating point
@@ -1736,10 +1733,6 @@ are always available. They are listed here in alphabetical order.
17361733
.. versionchanged:: 3.8
17371734
The *start* parameter can be specified as a keyword argument.
17381735

1739-
.. versionchanged:: 3.12 Summation of floats switched to an algorithm
1740-
that gives higher accuracy on most builds.
1741-
1742-
17431736
.. class:: super()
17441737
super(type, object_or_type=None)
17451738

Doc/library/imaplib.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ IMAP4 Objects
187187
-------------
188188

189189
All IMAP4rev1 commands are represented by methods of the same name, either
190-
uppercase or lowercase.
190+
upper-case or lower-case.
191191

192192
All arguments to commands are converted to strings, except for ``AUTHENTICATE``,
193193
and the last argument to ``APPEND`` which is passed as an IMAP4 literal. If

Doc/library/inspect.rst

+2-23
Original file line numberDiff line numberDiff line change
@@ -343,36 +343,15 @@ attributes (see :ref:`import-mod-attrs` for module attributes):
343343

344344
.. function:: iscoroutinefunction(object)
345345

346-
Return ``True`` if the object is a :term:`coroutine function` (a function
347-
defined with an :keyword:`async def` syntax), a :func:`functools.partial`
348-
wrapping a :term:`coroutine function`, or a sync function marked with
349-
:func:`markcoroutinefunction`.
346+
Return ``True`` if the object is a :term:`coroutine function`
347+
(a function defined with an :keyword:`async def` syntax).
350348

351349
.. versionadded:: 3.5
352350

353351
.. versionchanged:: 3.8
354352
Functions wrapped in :func:`functools.partial` now return ``True`` if the
355353
wrapped function is a :term:`coroutine function`.
356354

357-
.. versionchanged:: 3.12
358-
Sync functions marked with :func:`markcoroutinefunction` now return
359-
``True``.
360-
361-
362-
.. function:: markcoroutinefunction(func)
363-
364-
Decorator to mark a callable as a :term:`coroutine function` if it would not
365-
otherwise be detected by :func:`iscoroutinefunction`.
366-
367-
This may be of use for sync functions that return a :term:`coroutine`, if
368-
the function is passed to an API that requires :func:`iscoroutinefunction`.
369-
370-
When possible, using an :keyword:`async def` function is preferred. Also
371-
acceptable is calling the function and testing the return with
372-
:func:`iscoroutine`.
373-
374-
.. versionadded:: 3.12
375-
376355

377356
.. function:: iscoroutine(object)
378357

Doc/library/itertools.rst

+7-52
Original file line numberDiff line numberDiff line change
@@ -788,11 +788,6 @@ which incur interpreter overhead.
788788

789789
.. testcode::
790790

791-
import collections
792-
import math
793-
import operator
794-
import random
795-
796791
def take(n, iterable):
797792
"Return first n items of the iterable as a list"
798793
return list(islice(iterable, n))
@@ -839,8 +834,7 @@ which incur interpreter overhead.
839834
return chain.from_iterable(repeat(tuple(iterable), n))
840835

841836
def dotproduct(vec1, vec2):
842-
"Compute a sum of products."
843-
return sum(starmap(operator.mul, zip(vec1, vec2, strict=True)))
837+
return sum(map(operator.mul, vec1, vec2))
844838

845839
def convolve(signal, kernel):
846840
# See: https://betterexplained.com/articles/intuitive-convolution/
@@ -852,7 +846,7 @@ which incur interpreter overhead.
852846
window = collections.deque([0], maxlen=n) * n
853847
for x in chain(signal, repeat(0, n-1)):
854848
window.append(x)
855-
yield dotproduct(kernel, window)
849+
yield sum(map(operator.mul, kernel, window))
856850

857851
def polynomial_from_roots(roots):
858852
"""Compute a polynomial's coefficients from its roots.
@@ -897,21 +891,6 @@ which incur interpreter overhead.
897891
data[2] = 1
898892
return iter_index(data, 1) if n > 2 else iter([])
899893

900-
def factor(n):
901-
"Prime factors of n."
902-
# factor(97) --> 97
903-
# factor(98) --> 2 7 7
904-
# factor(99) --> 3 3 11
905-
for prime in sieve(n+1):
906-
while True:
907-
quotient, remainder = divmod(n, prime)
908-
if remainder:
909-
break
910-
yield prime
911-
n = quotient
912-
if n == 1:
913-
return
914-
915894
def flatten(list_of_lists):
916895
"Flatten one level of nesting"
917896
return chain.from_iterable(list_of_lists)
@@ -1154,6 +1133,11 @@ which incur interpreter overhead.
11541133

11551134
Now, we test all of the itertool recipes
11561135

1136+
>>> import operator
1137+
>>> import collections
1138+
>>> import math
1139+
>>> import random
1140+
11571141
>>> take(10, count())
11581142
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
11591143

@@ -1266,35 +1250,6 @@ which incur interpreter overhead.
12661250
>>> set(sieve(10_000)).isdisjoint(carmichael)
12671251
True
12681252

1269-
list(factor(0))
1270-
[]
1271-
list(factor(1))
1272-
[]
1273-
list(factor(2))
1274-
[2]
1275-
list(factor(3))
1276-
[3]
1277-
list(factor(4))
1278-
[2, 2]
1279-
list(factor(5))
1280-
[5]
1281-
list(factor(6))
1282-
[2, 3]
1283-
list(factor(7))
1284-
[7]
1285-
list(factor(8))
1286-
[2, 2, 2]
1287-
list(factor(9))
1288-
[3, 3]
1289-
list(factor(10))
1290-
[2, 5]
1291-
all(math.prod(factor(n)) == n for n in range(1, 1000))
1292-
True
1293-
all(set(factor(n)) <= set(sieve(n+1)) for n in range(1, 1000))
1294-
True
1295-
all(list(factor(n)) == sorted(factor(n)) for n in range(1, 1000))
1296-
True
1297-
12981253
>>> list(flatten([('a', 'b'), (), ('c', 'd', 'e'), ('f',), ('g', 'h', 'i')]))
12991254
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
13001255

Doc/library/lzma.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ Compressing and decompressing data in memory
147147
This format is more limited than ``.xz`` -- it does not support integrity
148148
checks or multiple filters.
149149

150-
* :const:`FORMAT_RAW`: A raw data stream, not using any container format.
150+
* :const:`FORMAT_RAW`: A raw data stream, not using sequences format.
151151
This format specifier does not support integrity checks, and requires that
152152
you always specify a custom filter chain (for both compression and
153153
decompression). Additionally, data compressed in this manner cannot be

0 commit comments

Comments
 (0)