Commit 45d22c25 authored by Jelle Zijlstra's avatar Jelle Zijlstra Committed by Berker Peksag

Improvements to typing documentation (#967)

Documents a few omitted classes and adds NamedTuple methods.
parent b785396a
...@@ -508,6 +508,14 @@ The module defines the following classes, functions and decorators: ...@@ -508,6 +508,14 @@ The module defines the following classes, functions and decorators:
An ABC with one abstract method ``__float__``. 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 .. class:: SupportsAbs
An ABC with one abstract method ``__abs__`` that is covariant An ABC with one abstract method ``__abs__`` that is covariant
...@@ -658,7 +666,19 @@ The module defines the following classes, functions and decorators: ...@@ -658,7 +666,19 @@ The module defines the following classes, functions and decorators:
.. class:: DefaultDict(collections.defaultdict, MutableMapping[KT, VT]) .. 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]) .. class:: Generator(Iterator[T_co], Generic[T_co, T_contra, V_co])
...@@ -742,9 +762,12 @@ The module defines the following classes, functions and decorators: ...@@ -742,9 +762,12 @@ The module defines the following classes, functions and decorators:
This defines the generic type ``IO[AnyStr]`` and aliases ``TextIO`` This defines the generic type ``IO[AnyStr]`` and aliases ``TextIO``
and ``BinaryIO`` for respectively ``IO[str]`` and ``IO[bytes]``. 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`. :func:`open`.
These types are also accessible directly as ``typing.IO``,
``typing.TextIO``, and ``typing.BinaryIO``.
.. class:: re .. class:: re
Wrapper namespace for regular expression matching types. Wrapper namespace for regular expression matching types.
...@@ -756,6 +779,9 @@ The module defines the following classes, functions and decorators: ...@@ -756,6 +779,9 @@ The module defines the following classes, functions and decorators:
``Pattern[str]``, ``Pattern[bytes]``, ``Match[str]``, or ``Pattern[str]``, ``Pattern[bytes]``, ``Match[str]``, or
``Match[bytes]``. ``Match[bytes]``.
These types are also accessible directly as ``typing.Pattern``
and ``typing.Match``.
.. class:: NamedTuple .. class:: NamedTuple
Typed version of namedtuple. Typed version of namedtuple.
...@@ -782,10 +808,20 @@ The module defines the following classes, functions and decorators: ...@@ -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. Fields with a default value must come after any fields without a default.
The resulting class has two extra attributes: ``_field_types``, 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 mapping field names to default values. (The field names are in the
``_fields`` attribute, which is part of the namedtuple API.) ``_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:: Backward-compatible usage::
Employee = NamedTuple('Employee', [('name', str), ('id', int)]) Employee = NamedTuple('Employee', [('name', str), ('id', int)])
...@@ -794,7 +830,7 @@ The module defines the following classes, functions and decorators: ...@@ -794,7 +830,7 @@ The module defines the following classes, functions and decorators:
Added support for :pep:`526` variable annotation syntax. Added support for :pep:`526` variable annotation syntax.
.. versionchanged:: 3.6.1 .. versionchanged:: 3.6.1
Added support for default values. Added support for default values, methods, and docstrings.
.. function:: NewType(typ) .. function:: NewType(typ)
...@@ -972,9 +1008,9 @@ The module defines the following classes, functions and decorators: ...@@ -972,9 +1008,9 @@ The module defines the following classes, functions and decorators:
:data:`ClassVar` is not a class itself, and should not :data:`ClassVar` is not a class itself, and should not
be used with :func:`isinstance` or :func:`issubclass`. be used with :func:`isinstance` or :func:`issubclass`.
Note that :data:`ClassVar` does not change Python runtime behavior; :data:`ClassVar` does not change Python runtime behavior, but
it can be used by 3rd party type checkers, so that the following it can be used by third-party type checkers. For example, a type checker
code might flagged as an error by those:: might flag the following code as an error::
enterprise_d = Starship(3000) enterprise_d = Starship(3000)
enterprise_d.stats = {} # Error, setting class variable on instance enterprise_d.stats = {} # Error, setting class variable on instance
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment