Assigning a variable to the result of an untyped method removes any existing type constraints
from typing import Any, Optional def foo() -> Optional[int]: return 42 raz: Any def bar() -> int: x = foo() if isinstance(x, int): reveal_type(x) x = raz() reveal_type(x) x = x + 42 return 0
$ python3.6 -m mypy --strict-optional test_optional_assign.py test_optional_assign.py:11: error: Revealed type is 'builtins.int' test_optional_assign.py:13: error: Revealed type is 'Union[builtins.int, builtins.None]' test_optional_assign.py:14: error: Unsupported operand types for + ("Optional[int]" and "int")
I would have expected the revealed type at like 13 to be Any.