[3.14] gh-138307: Update the Ellipsis documentation (GH-138306) (#138440)

Co-authored-by: Adorilson Bezerra <adorilson@gmail.com>
Co-authored-by: Stan Ulbrych <89152624+StanFromIreland@users.noreply.github.com>
Co-authored-by: Éric <merwok@netwok.org>
Co-authored-by: Ned Batchelder <ned@nedbatchelder.com>
This commit is contained in:
Miss Islington (bot) 2025-09-11 11:22:37 +02:00 committed by GitHub
parent 4ce4b82d35
commit dd930baf45
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 45 additions and 7 deletions

View file

@ -21,7 +21,9 @@ Glossary
right delimiters (parentheses, square brackets, curly braces or triple
quotes), or after specifying a decorator.
* The :const:`Ellipsis` built-in constant.
.. index:: single: ...; ellipsis literal
* The three dots form of the :ref:`Ellipsis <bltin-ellipsis-object>` object.
abstract base class
Abstract base classes complement :term:`duck-typing` by

View file

@ -65,8 +65,9 @@ A small number of constants live in the built-in namespace. They are:
.. index:: single: ...; ellipsis literal
.. data:: Ellipsis
The same as the ellipsis literal "``...``". Special value used mostly in conjunction
with extended slicing syntax for user-defined container data types.
The same as the ellipsis literal "``...``", an object frequently used to
indicate that something is omitted. Assignment to ``Ellipsis`` is possible, but
assignment to ``...`` raises a :exc:`SyntaxError`.
``Ellipsis`` is the sole instance of the :data:`types.EllipsisType` type.

View file

@ -5928,13 +5928,34 @@ It is written as ``None``.
The Ellipsis Object
-------------------
This object is commonly used by slicing (see :ref:`slicings`). It supports no
special operations. There is exactly one ellipsis object, named
This object is commonly used used to indicate that something is omitted.
It supports no special operations. There is exactly one ellipsis object, named
:const:`Ellipsis` (a built-in name). ``type(Ellipsis)()`` produces the
:const:`Ellipsis` singleton.
It is written as ``Ellipsis`` or ``...``.
In typical use, ``...`` as the ``Ellipsis`` object appears in a few different
places, for instance:
- In type annotations, such as :ref:`callable arguments <annotating-callables>`
or :ref:`tuple elements <annotating-tuples>`.
- As the body of a function instead of a :ref:`pass statement <tut-pass>`.
- In third-party libraries, such as `Numpy's slicing and striding
<https://numpy.org/doc/stable/user/basics.indexing.html#slicing-and-striding>`_.
Python also uses three dots in ways that are not ``Ellipsis`` objects, for instance:
- Doctest's :const:`ELLIPSIS <doctest.ELLIPSIS>`, as a pattern for missing content.
- The default Python prompt of the :term:`interactive` shell when partial input is incomplete.
Lastly, the Python documentation often uses three dots in conventional English
usage to mean omitted content, even in code examples that also use them as the
``Ellipsis``.
.. _bltin-notimplemented-object:

View file

@ -230,9 +230,11 @@ For example:
callback: Callable[[str], Awaitable[None]] = on_update
.. index:: single: ...; ellipsis literal
The subscription syntax must always be used with exactly two values: the
argument list and the return type. The argument list must be a list of types,
a :class:`ParamSpec`, :data:`Concatenate`, or an ellipsis. The return type must
a :class:`ParamSpec`, :data:`Concatenate`, or an ellipsis (``...``). The return type must
be a single type.
If a literal ellipsis ``...`` is given as the argument list, it indicates that
@ -375,8 +377,11 @@ accepts *any number* of type arguments::
# but ``z`` has been assigned to a tuple of length 3
z: tuple[int] = (1, 2, 3)
.. index:: single: ...; ellipsis literal
To denote a tuple which could be of *any* length, and in which all elements are
of the same type ``T``, use ``tuple[T, ...]``. To denote an empty tuple, use
of the same type ``T``, use the literal ellipsis ``...``: ``tuple[T, ...]``.
To denote an empty tuple, use
``tuple[()]``. Using plain ``tuple`` as an annotation is equivalent to using
``tuple[Any, ...]``::
@ -1162,6 +1167,8 @@ These can be used as types in annotations. They all support subscription using
Special form for annotating higher-order functions.
.. index:: single: ...; ellipsis literal
``Concatenate`` can be used in conjunction with :ref:`Callable <annotating-callables>` and
:class:`ParamSpec` to annotate a higher-order callable which adds, removes,
or transforms parameters of another

View file

@ -251,6 +251,7 @@ statements: a ``try`` statement's ``else`` clause runs when no exception
occurs, and a loop's ``else`` clause runs when no ``break`` occurs. For more on
the ``try`` statement and exceptions, see :ref:`tut-handling`.
.. index:: single: ...; ellipsis literal
.. _tut-pass:
:keyword:`!pass` Statements
@ -277,6 +278,12 @@ at a more abstract level. The :keyword:`!pass` is silently ignored::
... pass # Remember to implement this!
...
For this last case, many people use the ellipsis literal :code:`...` instead of
:code:`pass`. This use has no special meaning to Python, and is not part of
the language definition (you could use any constant expression here), but
:code:`...` is used conventionally as a placeholder body as well.
See :ref:`bltin-ellipsis-object`.
.. _tut-match: