Skip to content

Commit 2624453

Browse files
authored
Link to the Python type system specification (#117400)
1 parent 752e183 commit 2624453

File tree

1 file changed

+15
-73
lines changed

1 file changed

+15
-73
lines changed

Doc/library/typing.rst

Lines changed: 15 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -23,27 +23,25 @@
2323

2424
--------------
2525

26-
This module provides runtime support for type hints. For the original
27-
specification of the typing system, see :pep:`484`. For a simplified
28-
introduction to type hints, see :pep:`483`.
26+
This module provides runtime support for type hints.
2927

28+
Consider the function below::
3029

31-
The function below takes and returns a string and is annotated as follows::
30+
def moon_weight(earth_weight: float) -> str:
31+
return f'On the moon, you would weigh {earth_weight * 0.166} kilograms.'
3232

33-
def greeting(name: str) -> str:
34-
return 'Hello ' + name
33+
The function ``moon_weight`` takes an argument expected to be an instance of :class:`float`,
34+
as indicated by the *type hint* ``earth_weight: float``. The function is expected to
35+
return an instance of :class:`str`, as indicated by the ``-> str`` hint.
3536

36-
In the function ``greeting``, the argument ``name`` is expected to be of type
37-
:class:`str` and the return type :class:`str`. Subtypes are accepted as
38-
arguments.
37+
While type hints can be simple classes like :class:`float` or :class:`str`,
38+
they can also be more complex. The :mod:`typing` module provides a vocabulary of
39+
more advanced type hints.
3940

4041
New features are frequently added to the ``typing`` module.
4142
The `typing_extensions <https://pypi.org/project/typing-extensions/>`_ package
4243
provides backports of these new features to older versions of Python.
4344

44-
For a summary of deprecated features and a deprecation timeline, please see
45-
`Deprecation Timeline of Major Features`_.
46-
4745
.. seealso::
4846

4947
`"Typing cheat sheet" <https://mypy.readthedocs.io/en/stable/cheat_sheet_py3.html>`_
@@ -61,67 +59,11 @@ For a summary of deprecated features and a deprecation timeline, please see
6159

6260
.. _relevant-peps:
6361

64-
Relevant PEPs
65-
=============
66-
67-
Since the initial introduction of type hints in :pep:`484` and :pep:`483`, a
68-
number of PEPs have modified and enhanced Python's framework for type
69-
annotations:
70-
71-
.. raw:: html
72-
73-
<details>
74-
<summary><a style="cursor:pointer;">The full list of PEPs</a></summary>
75-
76-
* :pep:`526`: Syntax for Variable Annotations
77-
*Introducing* syntax for annotating variables outside of function
78-
definitions, and :data:`ClassVar`
79-
* :pep:`544`: Protocols: Structural subtyping (static duck typing)
80-
*Introducing* :class:`Protocol` and the
81-
:func:`@runtime_checkable<runtime_checkable>` decorator
82-
* :pep:`585`: Type Hinting Generics In Standard Collections
83-
*Introducing* :class:`types.GenericAlias` and the ability to use standard
84-
library classes as :ref:`generic types<types-genericalias>`
85-
* :pep:`586`: Literal Types
86-
*Introducing* :data:`Literal`
87-
* :pep:`589`: TypedDict: Type Hints for Dictionaries with a Fixed Set of Keys
88-
*Introducing* :class:`TypedDict`
89-
* :pep:`591`: Adding a final qualifier to typing
90-
*Introducing* :data:`Final` and the :func:`@final<final>` decorator
91-
* :pep:`593`: Flexible function and variable annotations
92-
*Introducing* :data:`Annotated`
93-
* :pep:`604`: Allow writing union types as ``X | Y``
94-
*Introducing* :data:`types.UnionType` and the ability to use
95-
the binary-or operator ``|`` to signify a
96-
:ref:`union of types<types-union>`
97-
* :pep:`612`: Parameter Specification Variables
98-
*Introducing* :class:`ParamSpec` and :data:`Concatenate`
99-
* :pep:`613`: Explicit Type Aliases
100-
*Introducing* :data:`TypeAlias`
101-
* :pep:`646`: Variadic Generics
102-
*Introducing* :data:`TypeVarTuple`
103-
* :pep:`647`: User-Defined Type Guards
104-
*Introducing* :data:`TypeGuard`
105-
* :pep:`655`: Marking individual TypedDict items as required or potentially missing
106-
*Introducing* :data:`Required` and :data:`NotRequired`
107-
* :pep:`673`: Self type
108-
*Introducing* :data:`Self`
109-
* :pep:`675`: Arbitrary Literal String Type
110-
*Introducing* :data:`LiteralString`
111-
* :pep:`681`: Data Class Transforms
112-
*Introducing* the :func:`@dataclass_transform<dataclass_transform>` decorator
113-
* :pep:`692`: Using ``TypedDict`` for more precise ``**kwargs`` typing
114-
*Introducing* a new way of typing ``**kwargs`` with :data:`Unpack` and
115-
:data:`TypedDict`
116-
* :pep:`695`: Type Parameter Syntax
117-
*Introducing* builtin syntax for creating generic functions, classes, and type aliases.
118-
* :pep:`698`: Adding an override decorator to typing
119-
*Introducing* the :func:`@override<override>` decorator
120-
121-
.. raw:: html
122-
123-
</details>
124-
<br>
62+
Specification for the Python Type System
63+
========================================
64+
65+
The canonical, up-to-date specification of the Python type system can be
66+
found at `"Specification for the Python type system" <https://typing.readthedocs.io/en/latest/spec/index.html>`_.
12567

12668
.. _type-aliases:
12769

0 commit comments

Comments
 (0)