-
-
Notifications
You must be signed in to change notification settings - Fork 2.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Incorrect union narrowing in chained conditionals #12208
Comments
Which version of mypy are you using? I'm not able to repro this error with the latest published version. |
Doesn't repro for me either: https://mypy-play.net/?mypy=latest&python=3.10&gist=e2c735beb847d6da4d53477050f3a119 |
Hello again, sorry I made a mistake while testing my minimal example. The problem comes with a Literal that is an enum field:
Here you can reproduce it: https://mypy-play.net/?mypy=latest&python=3.10&gist=dfcdd1d12e53c80d0e58ba5ed8750ccf |
Hey there, I believe I ran into another occurrence of this. It looks like the type has not been narrowed by the first if statement. Reproducible example: https://mypy-play.net/?mypy=latest&python=3.11&flags=verbose&gist=07d004a22a748059c834ff42d690c2ed from typing import Optional, Union
class RangeVals:
"""Hold a parameter value range."""
def __init__(
self,
min_val: Union[int, float],
max_val: Union[int, float],
) -> None:
self.min_val = min_val
self.max_val = max_val
def functionn(default_val: Union[str, float, int], rangeval: RangeVals):
if type(default_val) != type(rangeval.min_val):
raise TypeError("foo")
if default_val < rangeval.min_val:
raise ValueError("bar")
functionn("abc", RangeVals(min_val=3, max_val=10)) |
The original bug in this issue appears to have been fixed in mypy 1.4. @mikaelarguedas, your issue is unrelated to OP's bug. The behavior in your sample is expected behavior in mypy. |
I fixed this in #11521 |
Bug Report
Hey there!
I have recently encountered this case:
Expected Behavior
Mypy should be able to narrow down chained conditionals as presented. It seems that pylance has no problems with it, for example.
The text was updated successfully, but these errors were encountered: