Skip to content

Commit

Permalink
bpo-37759: Add examples for the new typing features (GH-16763) (GH-16764
Browse files Browse the repository at this point in the history
)

(cherry picked from commit a329153)

Co-authored-by: Raymond Hettinger <rhettinger@users.noreply.github.com>
  • Loading branch information
miss-islington and rhettinger committed Oct 14, 2019
1 parent c09379b commit 3ac1529
Showing 1 changed file with 21 additions and 5 deletions.
26 changes: 21 additions & 5 deletions Doc/whatsnew/3.8.rst
Expand Up @@ -1048,17 +1048,33 @@ typing

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
: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 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`,
: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`.

Expand Down Expand Up @@ -1527,7 +1543,7 @@ Changes in Python behavior
terminate the current thread if called while the interpreter is
finalizing, making them consistent with :c:func:`PyEval_RestoreThread`,
: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`.

Changes in the Python API
Expand Down

0 comments on commit 3ac1529

Please sign in to comment.