Skip to content

[3.6] Improvements to typing documentation (GH-967) #1053

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 9, 2017
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 43 additions & 7 deletions Doc/library/typing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -508,6 +508,14 @@ The module defines the following classes, functions and decorators:

An ABC with one abstract method ``__float__``.

.. class:: SupportsComplex

An ABC with one abstract method ``__complex__``.

.. class:: SupportsBytes

An ABC with one abstract method ``__bytes__``.

.. class:: SupportsAbs

An ABC with one abstract method ``__abs__`` that is covariant
Expand Down Expand Up @@ -658,7 +666,19 @@ The module defines the following classes, functions and decorators:

.. class:: DefaultDict(collections.defaultdict, MutableMapping[KT, VT])

A generic version of :class:`collections.defaultdict`
A generic version of :class:`collections.defaultdict`.

.. class:: Counter(collections.Counter, Dict[T, int])

A generic version of :class:`collections.Counter`.

.. versionadded:: 3.6.1

.. class:: ChainMap(collections.ChainMap, MutableMapping[KT, VT])

A generic version of :class:`collections.ChainMap`.

.. versionadded:: 3.6.1

.. class:: Generator(Iterator[T_co], Generic[T_co, T_contra, V_co])

Expand Down Expand Up @@ -742,9 +762,12 @@ The module defines the following classes, functions and decorators:

This defines the generic type ``IO[AnyStr]`` and aliases ``TextIO``
and ``BinaryIO`` for respectively ``IO[str]`` and ``IO[bytes]``.
These representing the types of I/O streams such as returned by
These represent the types of I/O streams such as returned by
:func:`open`.

These types are also accessible directly as ``typing.IO``,
``typing.TextIO``, and ``typing.BinaryIO``.

.. class:: re

Wrapper namespace for regular expression matching types.
Expand All @@ -756,6 +779,9 @@ The module defines the following classes, functions and decorators:
``Pattern[str]``, ``Pattern[bytes]``, ``Match[str]``, or
``Match[bytes]``.

These types are also accessible directly as ``typing.Pattern``
and ``typing.Match``.

.. class:: NamedTuple

Typed version of namedtuple.
Expand All @@ -782,10 +808,20 @@ The module defines the following classes, functions and decorators:
Fields with a default value must come after any fields without a default.

The resulting class has two extra attributes: ``_field_types``,
giving a dict mapping field names to types, and ``field_defaults``, a dict
giving a dict mapping field names to types, and ``_field_defaults``, a dict
mapping field names to default values. (The field names are in the
``_fields`` attribute, which is part of the namedtuple API.)

``NamedTuple`` subclasses can also have docstrings and methods::

class Employee(NamedTuple):
"""Represents an employee."""
name: str
id: int = 3

def __repr__(self) -> str:
return f'<Employee {self.name}, id={self.id}>'

Backward-compatible usage::

Employee = NamedTuple('Employee', [('name', str), ('id', int)])
Expand All @@ -794,7 +830,7 @@ The module defines the following classes, functions and decorators:
Added support for :pep:`526` variable annotation syntax.

.. versionchanged:: 3.6.1
Added support for default values.
Added support for default values, methods, and docstrings.

.. function:: NewType(typ)

Expand Down Expand Up @@ -972,9 +1008,9 @@ The module defines the following classes, functions and decorators:

:data:`ClassVar` is not a class itself, and should not
be used with :func:`isinstance` or :func:`issubclass`.
Note that :data:`ClassVar` does not change Python runtime behavior;
it can be used by 3rd party type checkers, so that the following
code might flagged as an error by those::
:data:`ClassVar` does not change Python runtime behavior, but
it can be used by third-party type checkers. For example, a type checker
might flag the following code as an error::

enterprise_d = Starship(3000)
enterprise_d.stats = {} # Error, setting class variable on instance
Expand Down