Better error message when union may not have been narrowed
Feature
If some attribute is not defined for a single union item (often None), we could give a hint that the type may need to be narrowed down.
Pitch
New users don't always figure out that they need an isinstance or an is not None check, and mypy could make this easier for beginners.
Toy example where this could apply:
def f(s: str | None) -> bool:
# Item "None" of "str | None" has no attribute "startswith"
return s.startswith('x')
I'm not sure what a good hint could be, but here's an initial idea:
x.py:3: note: You can use "if s is not None" to guard against a None value
I want to fix this issue.
I want to work on this.
I would like to work on this with a group for a college software engineering class.
Any of you please feel free to, just post on this issue when you have an open PR that passes tests!
I would similarly like to work on it.
I want to fix this
I felt many people missed what you( @JukkaL ) meant by often None to only none. I have added hint for all the missing attribute in my pr.
I believe this issue can be closed.
I don't think a PR for this issue has been merged yet (the merged PR above is on a fork).
@brianschubert You're right. My bad.