-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Closed
Description
Consider the following program:
import builtins
from typing import Any, Optional, Union
def func1() -> Optional[str]:
multi_state = 'value' # type: Optional[str]
if multi_state is None:
return None
reveal_type(multi_state)
return multi_state
def func2() -> Any:
multi_state = 'value' # type: Union[str, builtins.ellipsis]
if multi_state is Ellipsis:
return None
reveal_type(multi_state)
return multi_state
func1()
func2()
If I typecheck with:
$ mypy --strict-optional --suppress-error-context test_recognize_ellipsis_comparison.py
I get:
test_recognize_ellipsis_comparison.py:8: error: Revealed type is 'builtins.str'
test_recognize_ellipsis_comparison.py:15: error: Revealed type is 'Union[builtins.str, builtins.ellipsis]'
But expect:
test_recognize_ellipsis_comparison.py:8: error: Revealed type is 'builtins.str'
test_recognize_ellipsis_comparison.py:15: error: Revealed type is 'builtins.str'
This suggests that mypy does not recognize the comparison value is Ellipsis in the same way that it recognizes value is None.
In my own codebase having explicit recognition for Ellipsis would be useful in some functions that use both None and Ellipsis as sentinel values.
Metadata
Metadata
Assignees
Labels
No labels