-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Closed
Labels
bugmypy got something wrongmypy got something wrong
Description
Bug Report
There's something about type[None] that (understandably) confuses mypy and makes it start producing nonsense results.
While defining a function that takes arguments of type[None | A | B], mypy is able to narrow to type[None|A] (or type[None|B]) but any attempt to narrow beyond that causes no change in type. This makes it impossible to produce an exhaustive if/elif/else that can assert_never in the else case.
To Reproduce
https://mypy-play.net/?mypy=latest&python=3.11&gist=7b278f392c623c63fd5b576c483a0e3c
Expected Behavior
I should be able to write an elif clause that can assert_type(cls, type[None]).
Actual Behavior
Currently there's no way to narrow a type Union[type[None], T] type. (That I found.)
Your Environment
Metadata
Metadata
Assignees
Labels
bugmypy got something wrongmypy got something wrong