More reorganisation of the typing docs (#105787)

This commit is contained in:
Alex Waygood 2023-06-15 06:52:18 +01:00 committed by GitHub
parent 006a453205
commit da911a6b22
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2433,6 +2433,18 @@ These protocols are decorated with :func:`runtime_checkable`.
An ABC with one abstract method ``__round__`` An ABC with one abstract method ``__round__``
that is covariant in its return type. that is covariant in its return type.
ABCs for working with IO
------------------------
.. class:: IO
TextIO
BinaryIO
Generic type ``IO[AnyStr]`` and its subclasses ``TextIO(IO[str])``
and ``BinaryIO(IO[bytes])``
represent the types of I/O streams such as returned by
:func:`open`.
Functions and decorators Functions and decorators
------------------------ ------------------------
@ -3052,11 +3064,15 @@ Constant
.. versionadded:: 3.5.2 .. versionadded:: 3.5.2
Generic concrete collections .. _generic-concrete-collections:
----------------------------
Corresponding to built-in types Deprecated aliases
""""""""""""""""""""""""""""""" ------------------
.. _corresponding-to-built-in-types:
Aliases to built-in types
"""""""""""""""""""""""""
.. class:: Dict(dict, MutableMapping[KT, VT]) .. class:: Dict(dict, MutableMapping[KT, VT])
@ -3118,8 +3134,10 @@ Corresponding to built-in types
.. note:: :data:`Tuple` is a special form. .. note:: :data:`Tuple` is a special form.
Corresponding to types in :mod:`collections` .. _corresponding-to-types-in-collections:
""""""""""""""""""""""""""""""""""""""""""""
Aliases to types in :mod:`collections`
""""""""""""""""""""""""""""""""""""""
.. class:: DefaultDict(collections.defaultdict, MutableMapping[KT, VT]) .. class:: DefaultDict(collections.defaultdict, MutableMapping[KT, VT])
@ -3174,17 +3192,10 @@ Corresponding to types in :mod:`collections`
:class:`collections.deque` now supports subscripting (``[]``). :class:`collections.deque` now supports subscripting (``[]``).
See :pep:`585` and :ref:`types-genericalias`. See :pep:`585` and :ref:`types-genericalias`.
Other concrete types .. _other-concrete-types:
""""""""""""""""""""
.. class:: IO Aliases to other concrete types
TextIO """""""""""""""""""""""""""""""
BinaryIO
Generic type ``IO[AnyStr]`` and its subclasses ``TextIO(IO[str])``
and ``BinaryIO(IO[bytes])``
represent the types of I/O streams such as returned by
:func:`open`.
.. class:: Pattern .. class:: Pattern
Match Match
@ -3223,11 +3234,11 @@ Other concrete types
currently planned, but users are encouraged to use currently planned, but users are encouraged to use
:class:`str` instead of ``Text``. :class:`str` instead of ``Text``.
Abstract Base Classes .. _abstract-base-classes:
--------------------- .. _corresponding-to-collections-in-collections-abc:
Corresponding to collections in :mod:`collections.abc` Aliases to container ABCs in :mod:`collections.abc`
"""""""""""""""""""""""""""""""""""""""""""""""""""""" """""""""""""""""""""""""""""""""""""""""""""""""""
.. class:: AbstractSet(Collection[T_co]) .. class:: AbstractSet(Collection[T_co])
@ -3342,87 +3353,11 @@ Corresponding to collections in :mod:`collections.abc`
:class:`collections.abc.ValuesView` now supports subscripting (``[]``). :class:`collections.abc.ValuesView` now supports subscripting (``[]``).
See :pep:`585` and :ref:`types-genericalias`. See :pep:`585` and :ref:`types-genericalias`.
Corresponding to other types in :mod:`collections.abc` .. _asynchronous-programming:
Aliases to asynchronous ABCs in :mod:`collections.abc`
"""""""""""""""""""""""""""""""""""""""""""""""""""""" """"""""""""""""""""""""""""""""""""""""""""""""""""""
.. class:: Iterable(Generic[T_co])
Deprecated alias to :class:`collections.abc.Iterable`.
.. deprecated:: 3.9
:class:`collections.abc.Iterable` now supports subscripting (``[]``).
See :pep:`585` and :ref:`types-genericalias`.
.. class:: Iterator(Iterable[T_co])
Deprecated alias to :class:`collections.abc.Iterator`.
.. deprecated:: 3.9
:class:`collections.abc.Iterator` now supports subscripting (``[]``).
See :pep:`585` and :ref:`types-genericalias`.
.. class:: Generator(Iterator[YieldType], Generic[YieldType, SendType, ReturnType])
Deprecated alias to :class:`collections.abc.Generator`.
A generator can be annotated by the generic type
``Generator[YieldType, SendType, ReturnType]``. For example::
def echo_round() -> Generator[int, float, str]:
sent = yield 0
while sent >= 0:
sent = yield round(sent)
return 'Done'
Note that unlike many other generics in the typing module, the ``SendType``
of :class:`Generator` behaves contravariantly, not covariantly or
invariantly.
If your generator will only yield values, set the ``SendType`` and
``ReturnType`` to ``None``::
def infinite_stream(start: int) -> Generator[int, None, None]:
while True:
yield start
start += 1
Alternatively, annotate your generator as having a return type of
either ``Iterable[YieldType]`` or ``Iterator[YieldType]``::
def infinite_stream(start: int) -> Iterator[int]:
while True:
yield start
start += 1
.. deprecated:: 3.9
:class:`collections.abc.Generator` now supports subscripting (``[]``).
See :pep:`585` and :ref:`types-genericalias`.
.. class:: Hashable
Deprecated alias to :class:`collections.abc.Hashable`.
.. deprecated:: 3.12
Use :class:`collections.abc.Hashable` directly instead.
.. class:: Reversible(Iterable[T_co])
Deprecated alias to :class:`collections.abc.Reversible`.
.. deprecated:: 3.9
:class:`collections.abc.Reversible` now supports subscripting (``[]``).
See :pep:`585` and :ref:`types-genericalias`.
.. class:: Sized
Deprecated alias to :class:`collections.abc.Sized`.
.. deprecated:: 3.12
Use :class:`collections.abc.Sized` directly instead.
Asynchronous programming
""""""""""""""""""""""""
.. class:: Coroutine(Awaitable[ReturnType], Generic[YieldType, SendType, ReturnType]) .. class:: Coroutine(Awaitable[ReturnType], Generic[YieldType, SendType, ReturnType])
Deprecated alias to :class:`collections.abc.Coroutine`. Deprecated alias to :class:`collections.abc.Coroutine`.
@ -3512,9 +3447,90 @@ Asynchronous programming
:class:`collections.abc.Awaitable` now supports subscripting (``[]``). :class:`collections.abc.Awaitable` now supports subscripting (``[]``).
See :pep:`585` and :ref:`types-genericalias`. See :pep:`585` and :ref:`types-genericalias`.
.. _corresponding-to-other-types-in-collections-abc:
Context manager types Aliases to other ABCs in :mod:`collections.abc`
""""""""""""""""""""" """""""""""""""""""""""""""""""""""""""""""""""
.. class:: Iterable(Generic[T_co])
Deprecated alias to :class:`collections.abc.Iterable`.
.. deprecated:: 3.9
:class:`collections.abc.Iterable` now supports subscripting (``[]``).
See :pep:`585` and :ref:`types-genericalias`.
.. class:: Iterator(Iterable[T_co])
Deprecated alias to :class:`collections.abc.Iterator`.
.. deprecated:: 3.9
:class:`collections.abc.Iterator` now supports subscripting (``[]``).
See :pep:`585` and :ref:`types-genericalias`.
.. class:: Generator(Iterator[YieldType], Generic[YieldType, SendType, ReturnType])
Deprecated alias to :class:`collections.abc.Generator`.
A generator can be annotated by the generic type
``Generator[YieldType, SendType, ReturnType]``. For example::
def echo_round() -> Generator[int, float, str]:
sent = yield 0
while sent >= 0:
sent = yield round(sent)
return 'Done'
Note that unlike many other generics in the typing module, the ``SendType``
of :class:`Generator` behaves contravariantly, not covariantly or
invariantly.
If your generator will only yield values, set the ``SendType`` and
``ReturnType`` to ``None``::
def infinite_stream(start: int) -> Generator[int, None, None]:
while True:
yield start
start += 1
Alternatively, annotate your generator as having a return type of
either ``Iterable[YieldType]`` or ``Iterator[YieldType]``::
def infinite_stream(start: int) -> Iterator[int]:
while True:
yield start
start += 1
.. deprecated:: 3.9
:class:`collections.abc.Generator` now supports subscripting (``[]``).
See :pep:`585` and :ref:`types-genericalias`.
.. class:: Hashable
Deprecated alias to :class:`collections.abc.Hashable`.
.. deprecated:: 3.12
Use :class:`collections.abc.Hashable` directly instead.
.. class:: Reversible(Iterable[T_co])
Deprecated alias to :class:`collections.abc.Reversible`.
.. deprecated:: 3.9
:class:`collections.abc.Reversible` now supports subscripting (``[]``).
See :pep:`585` and :ref:`types-genericalias`.
.. class:: Sized
Deprecated alias to :class:`collections.abc.Sized`.
.. deprecated:: 3.12
Use :class:`collections.abc.Sized` directly instead.
.. _context-manager-types:
Aliases to :mod:`contextlib` ABCs
"""""""""""""""""""""""""""""""""
.. class:: ContextManager(Generic[T_co]) .. class:: ContextManager(Generic[T_co])