You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Enum exhaustiveness checking only works using "is" comparisons, not "==", conflicting with docs #14823
error: Argument 1 to "assert_never" has incompatible type "Direction"; expected "NoReturn"
This is problematic, because the docs also have another example that uses == for comparison and implies that it would work if the second clause would be added.
defchoose_direction(direction: Direction) ->None:
ifdirection==Direction.up:
print('Going up!')
returnassert_never(direction) # E: Argument 1 to "assert_never" has incompatible type "Direction"; expected "NoReturn"
Beyond the docs, this is problematic, because we can have enums that subclass the value type, e.g.
classDirection(str, Enum):
up='up'down='down'
Now it actually makes a difference at runtime whether we compare with is or ==, because == also matches normal strings 'up' and 'down', is does not.
Your Environment
Reproduced in Python 3.9 w/ typing_extensions and Python 3.11, using Mypy 1.0.1.
Activity
hauntsaninja commentedon Apr 24, 2023
Yeah, I was annoyed by this too. I merged my PR that has been sitting around for a long time #11521