Skip to content

Commit a461f3d

Browse files
authored
Merge branch 'main' into patch-1
2 parents 5934346 + d07dcce commit a461f3d

38 files changed

+393
-237
lines changed

.github/CODEOWNERS

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -255,8 +255,8 @@ Modules/_interp*module.c @ericsnowcurrently
255255
Lib/test/test_interpreters/ @ericsnowcurrently
256256

257257
# Android
258-
**/*Android* @mhsmith
259-
**/*android* @mhsmith
258+
**/*Android* @mhsmith @freakboy3742
259+
**/*android* @mhsmith @freakboy3742
260260

261261
# iOS (but not termios)
262262
**/iOS* @freakboy3742
@@ -267,7 +267,7 @@ Lib/test/test_interpreters/ @ericsnowcurrently
267267
**/*-ios* @freakboy3742
268268

269269
# WebAssembly
270-
/Tools/wasm/ @brettcannon
270+
/Tools/wasm/ @brettcannon @freakboy3742
271271

272272
# SBOM
273273
/Misc/externals.spdx.json @sethmlarson

.github/workflows/jit.yml

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ jobs:
6161
- true
6262
- false
6363
llvm:
64-
- 18
64+
- 19
6565
include:
6666
- target: i686-pc-windows-msvc/msvc
6767
architecture: Win32
@@ -121,10 +121,15 @@ jobs:
121121
choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}.1.0
122122
./PCbuild/build.bat --experimental-jit ${{ matrix.debug && '-d' || '' }} -p ${{ matrix.architecture }}
123123
124+
# The `find` line is required as a result of https://github.com/actions/runner-images/issues/9966.
125+
# This is a bug in the macOS runner image where the pre-installed Python is installed in the same
126+
# directory as the Homebrew Python, which causes the build to fail for macos-13. This line removes
127+
# the symlink to the pre-installed Python so that the Homebrew Python is used instead.
124128
- name: Native macOS
125129
if: runner.os == 'macOS'
126130
run: |
127131
brew update
132+
find /usr/local/bin -lname '*/Library/Frameworks/Python.framework/*' -delete
128133
brew install llvm@${{ matrix.llvm }}
129134
SDKROOT="$(xcrun --show-sdk-path)" \
130135
./configure --enable-experimental-jit ${{ matrix.debug && '--with-pydebug' || '--enable-optimizations --with-lto' }}
@@ -165,15 +170,19 @@ jobs:
165170
name: Free-Threaded (Debug)
166171
needs: interpreter
167172
runs-on: ubuntu-latest
173+
strategy:
174+
matrix:
175+
llvm:
176+
- 19
168177
steps:
169178
- uses: actions/checkout@v4
170179
- uses: actions/setup-python@v5
171180
with:
172181
python-version: '3.11'
173182
- name: Build with JIT enabled and GIL disabled
174183
run: |
175-
sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh 18
176-
export PATH="$(llvm-config-18 --bindir):$PATH"
184+
sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh ${{ matrix.llvm }}
185+
export PATH="$(llvm-config-${{ matrix.llvm }} --bindir):$PATH"
177186
./configure --enable-experimental-jit --with-pydebug --disable-gil
178187
make all --jobs 4
179188
- name: Run tests

Doc/c-api/typeobj.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,7 @@ slot typedefs
355355
+-----------------------------+-----------------------------+----------------------+
356356
| :c:type:`newfunc` | .. line-block:: | :c:type:`PyObject` * |
357357
| | | |
358-
| | :c:type:`PyObject` * | |
358+
| | :c:type:`PyTypeObject` * | |
359359
| | :c:type:`PyObject` * | |
360360
| | :c:type:`PyObject` * | |
361361
+-----------------------------+-----------------------------+----------------------+
@@ -2647,7 +2647,7 @@ Slot Type typedefs
26472647
26482648
See :c:member:`~PyTypeObject.tp_free`.
26492649

2650-
.. c:type:: PyObject *(*newfunc)(PyObject *, PyObject *, PyObject *)
2650+
.. c:type:: PyObject *(*newfunc)(PyTypeObject *, PyObject *, PyObject *)
26512651
26522652
See :c:member:`~PyTypeObject.tp_new`.
26532653

Doc/library/collections.abc.rst

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,8 @@ ABC Inherits from Abstract Methods Mi
143143

144144
:class:`Set` :class:`Collection` ``__contains__``, ``__le__``, ``__lt__``, ``__eq__``, ``__ne__``,
145145
``__iter__``, ``__gt__``, ``__ge__``, ``__and__``, ``__or__``,
146-
``__len__`` ``__sub__``, ``__xor__``, and ``isdisjoint``
146+
``__len__`` ``__sub__``, ``__rsub__``, ``__xor__``, ``__rxor__``
147+
and ``isdisjoint``
147148

148149
:class:`MutableSet` :class:`Set` ``__contains__``, Inherited :class:`Set` methods and
149150
``__iter__``, ``clear``, ``pop``, ``remove``, ``__ior__``,
@@ -162,7 +163,7 @@ ABC Inherits from Abstract Methods Mi
162163
``__len__``
163164

164165

165-
:class:`MappingView` :class:`Sized` ``__len__``
166+
:class:`MappingView` :class:`Sized` ``__init__``, ``__len__`` and ``__repr__``
166167
:class:`ItemsView` :class:`MappingView`, ``__contains__``,
167168
:class:`Set` ``__iter__``
168169
:class:`KeysView` :class:`MappingView`, ``__contains__``,

Doc/library/functions.rst

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1293,9 +1293,10 @@ are always available. They are listed here in alphabetical order.
12931293

12941294
.. class:: object()
12951295

1296-
Return a new featureless object. :class:`object` is a base for all classes.
1297-
It has methods that are common to all instances of Python classes. This
1298-
function does not accept any arguments.
1296+
This is the ultimate base class of all other classes. It has methods
1297+
that are common to all instances of Python classes. When the constructor
1298+
is called, it returns a new featureless object. The constructor does not
1299+
accept any arguments.
12991300

13001301
.. note::
13011302

Doc/library/importlib.metadata.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -229,10 +229,10 @@ Distribution metadata
229229
.. class:: PackageMetadata
230230

231231
A concrete implementation of the
232-
`PackageMetadata protocol <https://importlib-metadata.readthedocs.io/en/latest/api.html#importlib_metadata.PackageMetadata>`_.
232+
`PackageMetadata protocol <https://importlib-metadata.readthedocs.io/en/latest/api.html#importlib_metadata.PackageMetadata>`_.
233233

234-
In addition to providing the defined protocol methods and attributes, subscripting
235-
the instance is equivalent to calling the :meth:`!get` method.
234+
In addition to providing the defined protocol methods and attributes, subscripting
235+
the instance is equivalent to calling the :meth:`!get` method.
236236

237237
Every `Distribution Package <https://packaging.python.org/en/latest/glossary/#term-Distribution-Package>`_
238238
includes some metadata, which you can extract using the :func:`!metadata` function::

Doc/library/os.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3675,6 +3675,7 @@ features:
36753675
os.remove(os.path.join(root, name))
36763676
for name in dirs:
36773677
os.rmdir(os.path.join(root, name))
3678+
os.rmdir(top)
36783679

36793680
.. audit-event:: os.walk top,topdown,onerror,followlinks os.walk
36803681

Doc/library/warnings.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ Available Functions
398398
-------------------
399399

400400

401-
.. function:: warn(message, category=None, stacklevel=1, source=None, *, skip_file_prefixes=None)
401+
.. function:: warn(message, category=None, stacklevel=1, source=None, *, skip_file_prefixes=())
402402

403403
Issue a warning, or maybe ignore it or raise an exception. The *category*
404404
argument, if given, must be a :ref:`warning category class <warning-categories>`; it

Doc/reference/datamodel.rst

Lines changed: 37 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2033,7 +2033,8 @@ Basic customization
20332033
"informal" string representation of instances of that class is required.
20342034

20352035
This is typically used for debugging, so it is important that the representation
2036-
is information-rich and unambiguous.
2036+
is information-rich and unambiguous. A default implementation is provided by the
2037+
:class:`object` class itself.
20372038

20382039
.. index::
20392040
single: string; __str__() (object method)
@@ -2043,10 +2044,10 @@ Basic customization
20432044

20442045
.. method:: object.__str__(self)
20452046

2046-
Called by :func:`str(object) <str>` and the built-in functions
2047-
:func:`format` and :func:`print` to compute the "informal" or nicely
2047+
Called by :func:`str(object) <str>`, the default :meth:`__format__` implementation,
2048+
and the built-in function :func:`print`, to compute the "informal" or nicely
20482049
printable string representation of an object. The return value must be a
2049-
:ref:`string <textseq>` object.
2050+
:ref:`str <textseq>` object.
20502051

20512052
This method differs from :meth:`object.__repr__` in that there is no
20522053
expectation that :meth:`__str__` return a valid Python expression: a more
@@ -2063,7 +2064,8 @@ Basic customization
20632064
.. index:: pair: built-in function; bytes
20642065

20652066
Called by :ref:`bytes <func-bytes>` to compute a byte-string representation
2066-
of an object. This should return a :class:`bytes` object.
2067+
of an object. This should return a :class:`bytes` object. The :class:`object`
2068+
class itself does not provide this method.
20672069

20682070
.. index::
20692071
single: string; __format__() (object method)
@@ -2087,6 +2089,9 @@ Basic customization
20872089

20882090
The return value must be a string object.
20892091

2092+
The default implementation by the :class:`object` class should be given
2093+
an empty *format_spec* string. It delegates to :meth:`__str__`.
2094+
20902095
.. versionchanged:: 3.4
20912096
The __format__ method of ``object`` itself raises a :exc:`TypeError`
20922097
if passed any non-empty string.
@@ -2129,6 +2134,12 @@ Basic customization
21292134
``(x<y or x==y)`` does not imply ``x<=y``. To automatically generate ordering
21302135
operations from a single root operation, see :func:`functools.total_ordering`.
21312136

2137+
By default, the :class:`object` class provides implementations consistent
2138+
with :ref:`expressions-value-comparisons`: equality compares according to
2139+
object identity, and order comparisons raise :exc:`TypeError`. Each default
2140+
method may generate these results directly, but may also return
2141+
:data:`NotImplemented`.
2142+
21322143
See the paragraph on :meth:`__hash__` for
21332144
some important notes on creating :term:`hashable` objects which support
21342145
custom comparison operations and are usable as dictionary keys.
@@ -2184,9 +2195,9 @@ Basic customization
21842195
bucket).
21852196

21862197
User-defined classes have :meth:`__eq__` and :meth:`__hash__` methods
2187-
by default; with them, all objects compare unequal (except with themselves)
2188-
and ``x.__hash__()`` returns an appropriate value such that ``x == y``
2189-
implies both that ``x is y`` and ``hash(x) == hash(y)``.
2198+
by default (inherited from the :class:`object` class); with them, all objects compare
2199+
unequal (except with themselves) and ``x.__hash__()`` returns an appropriate
2200+
value such that ``x == y`` implies both that ``x is y`` and ``hash(x) == hash(y)``.
21902201

21912202
A class that overrides :meth:`__eq__` and does not define :meth:`__hash__`
21922203
will have its :meth:`__hash__` implicitly set to ``None``. When the
@@ -2236,8 +2247,8 @@ Basic customization
22362247
``bool()``; should return ``False`` or ``True``. When this method is not
22372248
defined, :meth:`~object.__len__` is called, if it is defined, and the object is
22382249
considered true if its result is nonzero. If a class defines neither
2239-
:meth:`!__len__` nor :meth:`!__bool__`, all its instances are considered
2240-
true.
2250+
:meth:`!__len__` nor :meth:`!__bool__` (which is true of the :class:`object`
2251+
class itself), all its instances are considered true.
22412252

22422253

22432254
.. _attribute-access:
@@ -2259,6 +2270,7 @@ access (use of, assignment to, or deletion of ``x.name``) for class instances.
22592270
for ``self``; or :meth:`__get__` of a *name* property raises
22602271
:exc:`AttributeError`). This method should either return the (computed)
22612272
attribute value or raise an :exc:`AttributeError` exception.
2273+
The :class:`object` class itself does not provide this method.
22622274

22632275
Note that if the attribute is found through the normal mechanism,
22642276
:meth:`__getattr__` is not called. (This is an intentional asymmetry between
@@ -2397,8 +2409,8 @@ method (a so-called *descriptor* class) appears in an *owner* class (the
23972409
descriptor must be in either the owner's class dictionary or in the class
23982410
dictionary for one of its parents). In the examples below, "the attribute"
23992411
refers to the attribute whose name is the key of the property in the owner
2400-
class' :attr:`~object.__dict__`.
2401-
2412+
class' :attr:`~object.__dict__`. The :class:`object` class itself does not
2413+
implement any of these protocols.
24022414

24032415
.. method:: object.__get__(self, instance, owner=None)
24042416

@@ -3090,17 +3102,19 @@ Emulating callable objects
30903102

30913103
Called when the instance is "called" as a function; if this method is defined,
30923104
``x(arg1, arg2, ...)`` roughly translates to ``type(x).__call__(x, arg1, ...)``.
3105+
The :class:`object` class itself does not provide this method.
30933106

30943107

30953108
.. _sequence-types:
30963109

30973110
Emulating container types
30983111
-------------------------
30993112

3100-
The following methods can be defined to implement container objects. Containers
3101-
usually are :term:`sequences <sequence>` (such as :class:`lists <list>` or
3113+
The following methods can be defined to implement container objects. None of them
3114+
are provided by the :class:`object` class itself. Containers usually are
3115+
:term:`sequences <sequence>` (such as :class:`lists <list>` or
31023116
:class:`tuples <tuple>`) or :term:`mappings <mapping>` (like
3103-
:class:`dictionaries <dict>`),
3117+
:term:`dictionaries <dictionary>`),
31043118
but can represent other containers as well. The first set of methods is used
31053119
either to emulate a sequence or to emulate a mapping; the difference is that for
31063120
a sequence, the allowable keys should be the integers *k* for which ``0 <= k <
@@ -3460,6 +3474,7 @@ Typical uses of context managers include saving and restoring various kinds of
34603474
global state, locking and unlocking resources, closing opened files, etc.
34613475

34623476
For more information on context managers, see :ref:`typecontextmanager`.
3477+
The :class:`object` class itself does not provide the context manager methods.
34633478

34643479

34653480
.. method:: object.__enter__(self)
@@ -3709,6 +3724,8 @@ are awaitable.
37093724
Must return an :term:`iterator`. Should be used to implement
37103725
:term:`awaitable` objects. For instance, :class:`asyncio.Future` implements
37113726
this method to be compatible with the :keyword:`await` expression.
3727+
The :class:`object` class itself is not awaitable and does not provide
3728+
this method.
37123729

37133730
.. note::
37143731

@@ -3794,6 +3811,9 @@ its ``__anext__`` method.
37943811

37953812
Asynchronous iterators can be used in an :keyword:`async for` statement.
37963813

3814+
The :class:`object` class itself does not provide these methods.
3815+
3816+
37973817
.. method:: object.__aiter__(self)
37983818

37993819
Must return an *asynchronous iterator* object.
@@ -3840,6 +3860,8 @@ suspend execution in its ``__aenter__`` and ``__aexit__`` methods.
38403860

38413861
Asynchronous context managers can be used in an :keyword:`async with` statement.
38423862

3863+
The :class:`object` class itself does not provide these methods.
3864+
38433865
.. method:: object.__aenter__(self)
38443866

38453867
Semantically similar to :meth:`~object.__enter__`, the only

Doc/tutorial/inputoutput.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,13 @@ yet another way to substitute values into strings, using placeholders like
100100
``$x`` and replacing them with values from a dictionary, but offers much less
101101
control of the formatting.
102102

103+
.. index::
104+
single: formatted string literal
105+
single: interpolated string literal
106+
single: string; formatted literal
107+
single: string; interpolated literal
108+
single: f-string
109+
single: fstring
103110

104111
.. _tut-f-strings:
105112

0 commit comments

Comments
 (0)