mirror of
https://github.com/python/cpython.git
synced 2025-09-03 15:31:08 +00:00
bpo-37759: Add examples for the new typing features (GH-16763)
This commit is contained in:
parent
61a6db5e79
commit
a3291531ea
1 changed files with 21 additions and 5 deletions
|
@ -1048,17 +1048,33 @@ typing
|
||||||
|
|
||||||
The :mod:`typing` module incorporates several new features:
|
The :mod:`typing` module incorporates several new features:
|
||||||
|
|
||||||
* Protocol definitions. See :pep:`544`, :class:`typing.Protocol` and
|
|
||||||
:func:`typing.runtime_checkable`. Simple ABCs like
|
|
||||||
:class:`typing.SupportsInt` are now ``Protocol`` subclasses.
|
|
||||||
|
|
||||||
* A dictionary type with per-key types. See :pep:`589` and
|
* A dictionary type with per-key types. See :pep:`589` and
|
||||||
:class:`typing.TypedDict`.
|
:class:`typing.TypedDict`.
|
||||||
|
TypedDict uses only string keys. By default, every key is required
|
||||||
|
to be present. Specify "total=False" to allow keys to be optional::
|
||||||
|
|
||||||
|
class Location(TypedDict, total=False):
|
||||||
|
lat_long: tuple
|
||||||
|
grid_square: str
|
||||||
|
xy_coordinate: tuple
|
||||||
|
|
||||||
* Literal types. See :pep:`586` and :class:`typing.Literal`.
|
* Literal types. See :pep:`586` and :class:`typing.Literal`.
|
||||||
|
Literal types indicate that a parameter or return value
|
||||||
|
is constrained to one or more specific literal values::
|
||||||
|
|
||||||
|
def get_status(port: int) -> Literal['connected', 'disconnected']:
|
||||||
|
...
|
||||||
|
|
||||||
* "Final" variables, functions, methods and classes. See :pep:`591`,
|
* "Final" variables, functions, methods and classes. See :pep:`591`,
|
||||||
:class:`typing.Final` and :func:`typing.final`.
|
:class:`typing.Final` and :func:`typing.final`.
|
||||||
|
The final qualifier instructs a static type checker to restrict
|
||||||
|
subclassing, overriding, or reassignment::
|
||||||
|
|
||||||
|
pi: Final[float] = 3.1415926536
|
||||||
|
|
||||||
|
* Protocol definitions. See :pep:`544`, :class:`typing.Protocol` and
|
||||||
|
:func:`typing.runtime_checkable`. Simple ABCs like
|
||||||
|
:class:`typing.SupportsInt` are now ``Protocol`` subclasses.
|
||||||
|
|
||||||
* New protocol class :class:`typing.SupportsIndex`.
|
* New protocol class :class:`typing.SupportsIndex`.
|
||||||
|
|
||||||
|
@ -1527,7 +1543,7 @@ Changes in Python behavior
|
||||||
terminate the current thread if called while the interpreter is
|
terminate the current thread if called while the interpreter is
|
||||||
finalizing, making them consistent with :c:func:`PyEval_RestoreThread`,
|
finalizing, making them consistent with :c:func:`PyEval_RestoreThread`,
|
||||||
:c:func:`Py_END_ALLOW_THREADS`, and :c:func:`PyGILState_Ensure`. If this
|
:c:func:`Py_END_ALLOW_THREADS`, and :c:func:`PyGILState_Ensure`. If this
|
||||||
behaviour is not desired, guard the call by checking :c:func:`_Py_IsFinalizing`
|
behavior is not desired, guard the call by checking :c:func:`_Py_IsFinalizing`
|
||||||
or :c:func:`sys.is_finalizing`.
|
or :c:func:`sys.is_finalizing`.
|
||||||
|
|
||||||
Changes in the Python API
|
Changes in the Python API
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue