8000 Merge with main: resolve boolobject.c includes · python/cpython@d5f49b2 · GitHub
[go: up one dir, main page]

Skip to content

Commit d5f49b2

Browse files
committed
Merge with main: resolve boolobject.c includes
2 parents 731f79d + 7fce106 commit d5f49b2

File tree

237 files changed

+7446
-3463
lines changed

Some content is hidden

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

237 files changed

+7446
-3463
lines changed

.github/CODEOWNERS

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ Objects/call.c @markshannon
2020
Python/ceval.c @markshannon
2121
Python/compile.c @markshannon
2222
Python/ast_opt.c @isidentical
23+
Lib/test/test_patma.py @brandtbucher
24+
Lib/test/test_peepholer.py @brandtbucher
2325

2426
# Exceptions
2527
Lib/traceback.py @iritkatriel
@@ -136,7 +138,7 @@ Lib/ast.py @isidentical
136138

137139
**/*idlelib* @terryjreedy
138140

139-
**/*typing* @gvanrossum @Fidget-Spinner
141+
**/*typing* @gvanrossum @Fidget-Spinner @JelleZijlstra
140142

141143
**/*asyncore @giampaolo
142144
**/*asynchat @giampaolo

.github/workflows/build.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,6 @@ jobs:
100100
run: make smelly
101101
- name: Check limited ABI symbols
102102
run: make check-limited-abi
103-
- name: Check global objects
104-
run: make check-global-objects
105103

106104
build_win32:
107105
name: 'Windows (x86)'

.github/workflows/doc.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ jobs:
4848
- name: 'Build HTML documentation'
4949
run: make -C Doc/ PYTHON=../python SPHINXOPTS="-q -W --keep-going -j4" html
5050
- name: 'Upload'
51-
uses: actions/upload-artifact@v2.2.4
51+
uses: actions/upload-artifact@v2.3.1
5252
with:
5353
name: doc-html
5454
path: Doc/build/html

.github/workflows/stale.yml

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,27 @@ jobs:
1414
runs-on: ubuntu-latest
1515

1616
steps:
17-
- uses: actions/stale@v4
17+
- name: "Check PRs with 'CLA signed' label"
18+
uses: actions/stale@v4
1819
with:
1920
repo-token: ${{ secrets.GITHUB_TOKEN }}
21+
only-pr-labels: 'CLA signed'
2022
stale-pr-message: 'This PR is stale because it has been open for 30 days with no activity.'
2123
stale-pr-label: 'stale'
2224
days-before-stale: 30
2325
days-before-close: -1
26+
ascending: true
27+
operations-per-run: 120
28+
29+
- name: "Check PRs with 'CLA not signed' label"
30+
uses: actions/stale@v4
31+
with:
32+
repo-token: ${{ secrets.GITHUB_TOKEN }}
33+
only-pr-labels: 'CLA not signed'
34+
stale-pr-message: 'This PR is stale because it has been open for 30 days with no activity. If the CLA is not signed within 14 days, it will be closed. See also https://devguide.python.org/pullrequest/#licensing'
35+
stale-pr-label: 'stale'
36+
close-pr-message: 'Closing this stale PR because the CLA is still not signed.'
37+
days-before-stale: 30
38+
days-before-close: 14
39+
ascending: true
40+
operations-per-run: 120

Doc/c-api/exceptions.rst

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,14 @@ For convenience, some of these functions will always return a
253253
.. versionadded:: 3.3
254254
255255
256+
.. c:function:: PyObject* PyErr_SetImportErrorSubclass(PyObject *exception, PyObject *msg, PyObject *name, PyObject *path)
257+
258+
Much like :c:func:`PyErr_SetImportError` but this function allows for
259+
specifying a subclass of :exc:`ImportError` to raise.
260+
261+
.. versionadded:: 3.6
262+
263+
256264
.. c:function:: void PyErr_SyntaxLocationObject(PyObject *filename, int lineno, int col_offset)
257265
258266
Set file, line, and offset information for the current exception. If the
@@ -320,13 +328,6 @@ an error value).
320328
:mod:`warnings` module and the :option:`-W` option in the command line
321329
documentation. There is no C API for warning control.
322330
323-
.. c:function:: PyObject* PyErr_SetImportErrorSubclass(PyObject *exception, PyObject *msg, PyObject *name, PyObject *path)
324-
325-
Much like :c:func:`PyErr_SetImportError` but this function allows for
326-
specifying a subclass of :exc:`ImportError` to raise.
327-
328-
.. versionadded:: 3.6
329-
330331
331332
.. c:function:: int PyErr_WarnExplicitObject(PyObject *category, PyObject *message, PyObject *filename, int lineno, PyObject *module, PyObject *registry)
332333

Doc/c-api/reflection.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Reflection
3131
See also :c:func:`PyThreadState_GetFrame`.
3232
3333
34-
.. c:function:: int PyFrame_GetBack(PyFrameObject *frame)
34+
.. c:function:: PyFrameObject* PyFrame_GetBack(PyFrameObject *frame)
3535
3636
Get the *frame* next outer frame.
3737
@@ -42,7 +42,7 @@ Reflection
4242
.. versionadded:: 3.9
4343
4444
45-
.. c:function:: int PyFrame_GetCode(PyFrameObject *frame)
45+
.. c:function:: PyCodeObject* PyFrame_GetCode(PyFrameObject *frame)
4646
4747
Get the *frame* code.
4848

Doc/c-api/typeobj.rst

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ PyObject Slots
476476
--------------
477477

478478
The type object structure extends the :c:type:`PyVarObject` structure. The
479-
:attr:`ob_size` field is used for dynamic types (created by :func:`type_new`,
479+
:attr:`ob_size` field is used for dynamic types (created by :func:`type_new`,
480480
usually called from a class statement). Note that :c:data:`PyType_Type` (the
481481
metatype) initializes :c:member:`~PyTypeObject.tp_itemsize`, which means that its instances (i.e.
482482
type objects) *must* have the :attr:`ob_size` field.
@@ -2000,6 +2000,17 @@ and :c:type:`PyType_Type` effectively act as defaults.)
20002000
For this field to be taken into account (even through inheritance),
20012001
you must also set the :const:`Py_TPFLAGS_HAVE_FINALIZE` flags bit.
20022002

2003+
Also, note that, in a garbage collected Python,
2004+
:c:member:`~PyTypeObject.tp_dealloc` may be called from
2005+
any Python thread, not just the thread which created the object (if the object
2006+
becomes part of a refcount cycle, that cycle might be collected by a garbage
2007+
collection on any thread). This is not a problem for Python API calls, since
2008+
the thread on which tp_dealloc is called will own the Global Interpreter Lock
2009+
(GIL). However, if the object being destroyed in turn destroys objects from some
2010+
other C or C++ library, care should be taken to ensure that destroying those
2011+
objects on the thread which called tp_dealloc will not violate any assumptions
2012+
of the library.
2013+
20032014
**Inheritance:**
20042015

20052016
This field is inherited by subtypes.
@@ -2024,17 +2035,6 @@ and :c:type:`PyType_Type` effectively act as defaults.)
20242035
.. versionadded:: 3.9 (the field exists since 3.8 but it's only used since 3.9)
20252036

20262037

2027-
Also, note that, in a garbage collected Python, :c:member:`~PyTypeObject.tp_dealloc` may be called from
2028-
any Python thread, not just the thread which created the object (if the object
2029-
becomes part of a refcount cycle, that cycle might be collected by a garbage
2030-
collection on any thread). This is not a problem for Python API calls, since
2031-
the thread on which tp_dealloc is called will own the Global Interpreter Lock
2032-
(GIL). However, if the object being destroyed in turn destroys objects from some
2033-
other C or C++ library, care should be taken to ensure that destroying those
2034-
objects on the thread which called tp_dealloc will not violate any assumptions
2035-
of the library.
2036-
2037-
20382038
.. _static-types:
20392039

20402040
Static Types
@@ -2440,7 +2440,8 @@ Async Object Structures
24402440

24412441
PyObject *am_aiter(PyObject *self);
24422442

2443-
Must return an :term:`awaitable` object. See :meth:`__anext__` for details.
2443+
Must return an :term:`asynchronous iterator` object.
2444+
See :meth:`__anext__` for details.
24442445

24452446
This slot may be set to ``NULL`` if an object does not implement
24462447
asynchronous iteration protocol.

Doc/c-api/unicode.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1003,7 +1003,7 @@ Error handling is set by errors which may also be set to ``NULL`` meaning to use
10031003
the default handling defined for the codec. Default error handling for all
10041004
built-in codecs is "strict" (:exc:`ValueError` is raised).
10051005
1006-
The codecs all use a similar interface. Only deviation from the following
1006+
The codecs all use a similar interface. Only deviations from the following
10071007
generic ones are documented for simplicity.
10081008
10091009
@@ -1171,7 +1171,7 @@ These are the UTF-16 codec APIs:
11711171
``1``, any byte order mark is copied to the output (where it will result in
11721172
either a ``\ufeff`` or a ``\ufffe`` character).
11731173
1174-
After completion, *\*byteorder* is set to the current byte order at the end
1174+
After completion, ``*byteorder`` is set to the current byte order at the end
11751175
of input data.
11761176
11771177
If *byteorder* is ``NULL``, the codec starts in native order mode.
@@ -1302,7 +1302,7 @@ Character Map Codecs
13021302
13031303
This codec is special in that it can be used to implement many different codecs
13041304
(and this is in fact what was done to obtain most of the standard codecs
1305-
included in the :mod:`encodings` package). The codec uses mapping to encode and
1305+
included in the :mod:`encodings` package). The codec uses mappings to encode and
13061306
decode characters. The mapping objects provided must support the
13071307
:meth:`__getitem__` mapping interface; dictionaries and sequences work well.
13081308
@@ -1426,7 +1426,7 @@ They all return ``NULL`` or ``-1`` if an exception occurs.
14261426
.. c:function:: PyObject* PyUnicode_Splitlines(PyObject *s, int keepend)
14271427
14281428
Split a Unicode string at line breaks, returning a list of Unicode strings.
1429-
CRLF is considered to be one line break. If *keepend* is ``0``, the Line break
1429+
CRLF is considered to be one line break. If *keepend* is ``0``, the line break
14301430
characters are not included in the resulting strings.
14311431
14321432

Doc/c-api/veryhigh.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ the same library that the Python runtime is using.
7575
:c:func:`PyRun_SimpleFile`. *filename* is decoded from the filesystem
7676
encoding (:func:`sys.getfilesystemencoding`). If *filename* is ``NULL``, this
7777
function uses ``"???"`` as the filename.
78+
If *closeit* is true, the file is closed before
79+
``PyRun_SimpleFileExFlags()`` returns.
7880
7981
8082
.. c:function:: int PyRun_SimpleString(const char *command)

Doc/faq/programming.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1819,7 +1819,7 @@ for ``None``. This reads like plain English in code and avoids confusion with
18191819
other objects that may have boolean values that evaluate to false.
18201820

18211821
2) Detecting optional arguments can be tricky when ``None`` is a valid input
1822-
value. In those situations, you can create an singleton sentinel object
1822+
value. In those situations, you can create a singleton sentinel object
18231823
guaranteed to be distinct from other objects. For example, here is how
18241824
to implement a method that behaves like :meth:`dict.pop`::
18251825

@@ -1908,7 +1908,7 @@ The *cached_property* approach only works with methods that do not take
19081908
any arguments. It does not create a reference to the instance. The
19091909
cached method result will be kept only as long as the instance is alive.
19101910

1911-
The advantage is that when an instance is not longer used, the cached
1911+
The advantage is that when an instance is no longer used, the cached
19121912
method result will be released right away. The disadvantage is that if
19131913
instances accumulate, so too will the accumulated method results. They
19141914
can grow without bound.

Doc/howto/descriptor.rst

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -696,10 +696,14 @@ a pure Python equivalent:
696696
>>> b.g == b['g'] == ('getattr_hook', b, 'g')
697697
True
698698

699+
Note, there is no :meth:`__getattr__` hook in the :meth:`__getattribute__`
700+
code. That is why calling :meth:`__getattribute__` directly or with
701+
``super().__getattribute__`` will bypass :meth:`__getattr__` entirely.
699702

700-
Interestingly, attribute lookup doesn't call :meth:`object.__getattribute__`
701-
directly. Instead, both the dot operator and the :func:`getattr` function
702-
perform attribute lookup by way of a helper function:
703+
Instead, it is the dot operator and the :func:`getattr` function that are
704+
responsible for invoking :meth:`__getattr__` whenever :meth:`__getattribute__`
705+
raises an :exc:`AttributeError`. Their logic is encapsulated in a helper
706+
function:
703707

704708
.. testcode::
705709

@@ -744,12 +748,6 @@ perform attribute lookup by way of a helper function:
744748
...
745749
AttributeError: 'ClassWithoutGetAttr' object has no attribute 'z'
746750

747-
So if :meth:`__getattr__` exists, it is called whenever :meth:`__getattribute__`
748-
raises :exc:`AttributeError` (either directly or in one of the descriptor calls).
749-
750-
Also, if a user calls :meth:`object.__getattribute__` directly, the
751-
:meth:`__getattr__` hook is bypassed entirely.
752-
753751

754752
Invocation from a class
755753
-----------------------
@@ -991,17 +989,17 @@ here is a pure Python equivalent:
991989
if obj is None:
992990
return self
993991
if self.fget is None:
994-
raise AttributeError(f'unreadable attribute {self._name}')
992+
raise AttributeError(f"property '{self._name}' has no getter")
995993
return self.fget(obj)
996994

997995
def __set__(self, obj, value):
998996
if self.fset is None:
999-
raise AttributeError(f"can't set attribute {self._name}")
997+
raise AttributeError(f"property '{self._name}' has no setter")
1000998
self.fset(obj, value)
1001999

10021000
def __delete__(self, obj):
10031001
if self.fdel is None:
1004-
raise AttributeError(f"can't delete attribute {self._name}")
1002+
raise AttributeError(f"property '{self._name}' has no deleter")
10051003
self.fdel(obj)
10061004

10071005
def getter(self, fget):
@@ -1456,7 +1454,7 @@ attributes stored in ``__slots__``:
14561454
>>> mark.dept = 'Space Pirate'
14571455
Traceback (most recent call last):
14581456
...
1459-
AttributeError: can't set attribute
1457+
AttributeError: property 'dept' of 'Immutable' object has no setter
14601458
>>> mark.location = 'Mars'
14611459
Traceback (most recent call last):
14621460
...

Doc/library/__main__.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ attribute will include the package's path if imported::
253253

254254
This won't work for ``__main__.py`` files in the root directory of a .zip file
255255
though. Hence, for consistency, minimal ``__main__.py`` like the :mod:`venv`
256-
one mentioned above are preferred.
256+
one mentioned below are preferred.
257257

258258
.. seealso::
259259

0 commit comments

Comments
 (0)
0