From 597ebc8cf604de49eabbc7b83be2debd005d7819 Mon Sep 17 00:00:00 2001 From: kj <28750310+Fidget-Spinner@users.noreply.github.com> Date: Sun, 20 Dec 2020 06:32:06 +0800 Subject: [3.9] bpo-42675: Document collections.abc.Callable changes (GH-23839) (#23852) --- Doc/library/types.rst | 3 +++ Doc/whatsnew/3.9.rst | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/Doc/library/types.rst b/Doc/library/types.rst index 0fe3822..d83d966 100644 --- a/Doc/library/types.rst +++ b/Doc/library/types.rst @@ -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) diff --git a/Doc/whatsnew/3.9.rst b/Doc/whatsnew/3.9.rst index f8f421b..68b1e50 100644 --- a/Doc/whatsnew/3.9.rst +++ b/Doc/whatsnew/3.9.rst @@ -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`.) -- cgit v0.12