-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Closed
Labels
bugmypy got something wrongmypy got something wrongpriority-0-hightopic-type-narrowingConditional type narrowing / binderConditional type narrowing / bindertopic-type-variables
Description
See the following example:
from typing import Any, Optional, TypeVar
T = TypeVar("T")
def assert_not_none(value: Optional[T]) -> T:
assert value is not None
return value
def foo1(a: Optional[Any]) -> int:
return assert_not_none(a)[3]
def foo2(a: Optional[Any]) -> int:
assert a is not None
return a[3]
I would expect that foo1
and foo2
are equivalent. However, running mypy
on this file, I get:
test.py:12: error: Value of type <nothing> is not indexable
For some reason, assert_not_none
doesn't map Optional[Any]
to Any
, as it is supposed to (and which would accept the indexing), but instead maps it to <nothing>
which throws an error. The second version with asserting that it is not None seems to work fine, though.
septatrix, billsioros, olveirap, mausch and tdsmith
Metadata
Metadata
Assignees
Labels
bugmypy got something wrongmypy got something wrongpriority-0-hightopic-type-narrowingConditional type narrowing / binderConditional type narrowing / bindertopic-type-variables