-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Closed
Labels
bugmypy got something wrongmypy got something wrong
Description
Bug Report
Code below works fine with 0.971, but fails with 0.981. It seems that 0.971 did type narrowing on contents of a Union
, but 0.981 doesn't do it consistently.
To Reproduce
from typing import Union
from typing_extensions import reveal_type, assert_type
from datetime import date, datetime, timedelta
Scalar = Union[str, bytes, date, datetime, timedelta, bool, complex]
def reduce_it(s: Scalar) -> Scalar:
return s
reveal_type(reduce_it(20))
reveal_type(reduce_it(True))
assert_type(reduce_it(True), Scalar)
Expected Behavior
Version 0.971 output:
mypysubclass.py:13: note: Revealed type is "Union[builtins.str, builtins.bytes, datetime.date, datetime.timedelta, builtins.complex]"
mypysubclass.py:14: note: Revealed type is "Union[builtins.str, builtins.bytes, datetime.date, datetime.timedelta, builtins.complex]"
Actual Behavior
Version 0.981 output:
mypysubclass.py:13: note: Revealed type is "Union[builtins.str, builtins.bytes, datetime.date, datetime.timedelta, builtins.complex]"
mypysubclass.py:14: note: Revealed type is "Union[builtins.str, builtins.bytes, datetime.date, datetime.timedelta, builtins.complex]"
mypysubclass.py:16: error: Expression is of type "Union[str, bytes, date, timedelta, complex]", not "Union[str, bytes, date, datetime, timedelta, bool, complex]"
Your Environment
- Mypy version used: 0.981
- Mypy command-line flags: None
- Mypy configuration options from
mypy.ini
(and other config files): None - Python version used: 3.10.4
Metadata
Metadata
Assignees
Labels
bugmypy got something wrongmypy got something wrong