diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2020-11-19 17:59:10 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-19 17:59:10 (GMT) |
commit | 1051ca4d974ebb6448f58b661aa28f8aff325ed3 (patch) | |
tree | 433fe83d7e555388a990635132dd4c8633875503 | |
parent | 2acd9d0c6ccf0b4360e3b63beddb97996bcb9bb1 (diff) | |
download | cpython-1051ca4d974ebb6448f58b661aa28f8aff325ed3.zip cpython-1051ca4d974ebb6448f58b661aa28f8aff325ed3.tar.gz cpython-1051ca4d974ebb6448f58b661aa28f8aff325ed3.tar.bz2 |
bpo-42345: Add whatsnew and versionchanged for typing.Literal in 3.9 (GH-23386)
* Whatsnew entry in 3.9 same as the one in 3.10.
* versionchanged for typing.Literal docs
Needs backport to 3.9.
(cherry picked from commit e1dc0db8c7cb8c4d7343e051ba85146b375bb8e0)
Co-authored-by: kj <28750310+Fidget-Spinner@users.noreply.github.com>
-rw-r--r-- | Doc/library/typing.rst | 6 | ||||
-rw-r--r-- | Doc/whatsnew/3.9.rst | 29 |
2 files changed, 35 insertions, 0 deletions
diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst index 42a89ce..28c607e 100644 --- a/Doc/library/typing.rst +++ b/Doc/library/typing.rst @@ -655,6 +655,12 @@ These can be used as types in annotations using ``[]``, each having a unique syn .. versionadded:: 3.8 + .. versionchanged:: 3.9.1 + ``Literal`` now de-duplicates parameters. Equality comparison of + ``Literal`` objects are no longer order dependent. ``Literal`` objects + will now raise a :exc:`TypeError` exception during equality comparisons + if one of their parameters are not :term:`immutable`. + .. data:: ClassVar Special type construct to mark class variables. diff --git a/Doc/whatsnew/3.9.rst b/Doc/whatsnew/3.9.rst index a601b16..b89faf1 100644 --- a/Doc/whatsnew/3.9.rst +++ b/Doc/whatsnew/3.9.rst @@ -1454,3 +1454,32 @@ Removed ``PyNullImporter_Type``, ``PyCmpWrapper_Type``, ``PySortWrapper_Type``, ``PyNoArgsFunction``. (Contributed by Pablo Galindo Salgado in :issue:`39372`.) + +Notable changes in Python 3.9.1 +=============================== + +typing +------ + +The behavior of :class:`typing.Literal` was changed to conform with :pep:`586` +and to match the behavior of static type checkers specified in the PEP. + +1. ``Literal`` now de-duplicates parameters. +2. Equality comparisons between ``Literal`` objects are now order independent. +3. ``Literal`` comparisons now respect types. For example, + ``Literal[0] == Literal[False]`` previously evaluated to ``True``. It is + now ``False``. To support this change, the internally used type cache now + supports differentiating types. +4. ``Literal`` objects will now raise a :exc:`TypeError` exception during + equality comparisons if one of their parameters are not :term:`immutable`. + Note that declaring ``Literal`` with mutable parameters will not throw + an error:: + + >>> from typing import Literal + >>> Literal[{0}] + >>> Literal[{0}] == Literal[{False}] + Traceback (most recent call last): + File "<stdin>", line 1, in <module> + TypeError: unhashable type: 'set' + +(Contributed by Yurii Karabas in :issue:`42345`.)
\ No newline at end of file |