[Python-checkins] bpo-42675: Document collections.abc.Callable changes (GH-23839)

gvanrossum webhook-mailer at python.org
Fri Dec 18 12:39:36 EST 2020


https://github.com/python/cpython/commit/d75f6f78e6ca230d0dacc116dca9d8bf91509b68
commit: d75f6f78e6ca230d0dacc116dca9d8bf91509b68
branch: master
author: kj <28750310+Fidget-Spinner at users.noreply.github.com>
committer: gvanrossum <gvanrossum at gmail.com>
date: 2020-12-18T09:39:26-08:00
summary:

bpo-42675: Document collections.abc.Callable changes (GH-23839)

files:
M Doc/library/types.rst
M Doc/whatsnew/3.10.rst

diff --git a/Doc/library/types.rst b/Doc/library/types.rst
index 6f0dc259303fa..8e05f8408e545 100644
--- a/Doc/library/types.rst
+++ b/Doc/library/types.rst
@@ -280,6 +280,10 @@ Standard names are defined for the following types:
 
    .. versionadded:: 3.9
 
+   .. versionchanged:: 3.9.2
+      This type can now be subclassed.
+
+
 .. data:: Union
 
    The type of :ref:`union type expressions<types-union>`.
diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst
index b690f8d2d7cd7..a6f9b0b1754d2 100644
--- a/Doc/whatsnew/3.10.rst
+++ b/Doc/whatsnew/3.10.rst
@@ -179,6 +179,21 @@ codecs
 Add a :func:`codecs.unregister` function to unregister a codec search function.
 (Contributed by Hai Shi in :issue:`41842`.)
 
+collections.abc
+---------------
+
+The ``__args__`` of the :ref:`parameterized generic <types-genericalias>` for
+:class:`collections.abc.Callable` are now consistent with :data:`typing.Callable`.
+:class:`collections.abc.Callable` generic now flattens type parameters, similar
+to what :data:`typing.Callable` currently does.  This means that
+``collections.abc.Callable[[int, str], str]`` will have ``__args__`` of
+``(int, str, str)``; previously this was ``([int, str], str)``.  To allow this
+change, :class:`types.GenericAlias` can now be subclassed, and a subclass will
+be returned when subscripting the :class:`collections.abc.Callable` type.  Note
+that a :exc:`TypeError` may be raised for invalid forms of parameterizing
+:class:`collections.abc.Callable` which may have passed silently in Python 3.9.
+(Contributed by Ken Jin in :issue:`42195`.)
+
 contextlib
 ----------
 
@@ -507,6 +522,15 @@ Changes in the Python API
   ignored.
   (Contributed by Victor Stinner in :issue:`42639`.)
 
+* :class:`collections.abc.Callable` generic now flattens type parameters, similar
+  to what :data:`typing.Callable` currently does.  This means that
+  ``collections.abc.Callable[[int, str], str]`` will have ``__args__`` of
+  ``(int, str, str)``; previously this was ``([int, str], str)``.  Code which
+  accesses the arguments via :func:`typing.get_args` or ``__args__`` need to account
+  for this change.  Furthermore, :exc:`TypeError` may be raised for invalid forms
+  of parameterizing :class:`collections.abc.Callable` which may have passed
+  silently in Python 3.9.
+  (Contributed by Ken Jin in :issue:`42195`.)
 
 CPython bytecode changes
 ========================



More information about the Python-checkins mailing list