bpo-42345: Add whatsnew for typing.Literal in 3.10 (GH-23385)
This commit is contained in:
parent
a85fefe71b
commit
4687338d0e
|
@ -300,6 +300,32 @@ and :data:`types.NotImplementedType` classes, providing a new set
|
|||
of types readily interpretable by type checkers.
|
||||
(Contributed by Bas van Beek in :issue:`41810`.)
|
||||
|
||||
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 respects 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`.)
|
||||
|
||||
unittest
|
||||
--------
|
||||
|
||||
|
|
Loading…
Reference in New Issue