]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.9] bpo-42675: Document collections.abc.Callable changes (GH-23839) (#23852)
authorkj <28750310+Fidget-Spinner@users.noreply.github.com>
Sat, 19 Dec 2020 22:32:06 +0000 (06:32 +0800)
committerGitHub <noreply@github.com>
Sat, 19 Dec 2020 22:32:06 +0000 (14:32 -0800)
Doc/library/types.rst
Doc/whatsnew/3.9.rst

index 0fe3822fa542e333930dffd608b9a8a378bbbe8a..d83d9667ba3a7ca761bde03060a611ee552733e7 100644 (file)
@@ -260,6 +260,9 @@ Standard names are defined for the following types:
 
    .. versionadded:: 3.9
 
+   .. versionchanged:: 3.9.2
+      This type can now be subclassed.
+
 
 .. class:: TracebackType(tb_next, tb_frame, tb_lasti, tb_lineno)
 
index f8f421bdda1c7c6bac32358ccdc29b51ea3e0973..68b1e504da89efcbe07d9b084f75101093cd8251 100644 (file)
@@ -1497,3 +1497,22 @@ functions and options conditionally available based on the operating system
 version in use at runtime ("weaklinking").
 
 (Contributed by Ronald Oussoren and Lawrence D'Anna in :issue:`41100`.)
+
+Notable changes in Python 3.9.2
+===============================
+
+collections.abc
+---------------
+
+: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.
+Code which accesses the arguments via :func:`typing.get_args` or ``__args__``
+need to account for this change.  A :exc:`DeprecationWarning` may be emitted for
+invalid forms of parameterizing :class:`collections.abc.Callable` which may have
+passed silently in Python 3.9.1.  This :exc:`DeprecationWarning` will
+become a :exc:`TypeError` in Python 3.10.
+(Contributed by Ken Jin in :issue:`42195`.)