We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
Bug Report
from typing import TypeVar, overload _T = TypeVar("_T") @overload def getenv(key: str) -> str | None: ... @overload def getenv(key: str, default: _T) -> str | _T: ... def getenv(key, default): return key def test(custom_var: str) -> str: return getenv(custom_var) or getenv("V", "D")
https://mypy-play.net/?mypy=latest&python=3.12&gist=4d959cd7069a8495533bfeca1cd40729
Actual Behavior
main.py:16: error: Incompatible return value type (got "str | None", expected "str") [return-value]
Expected Behavior
This should type check without errors, since we have an or with a call that always returns str.
or
str
It works if I replace type variable with just str:
@overload def getenv(key: str, default: str) -> str: ...
but something about _T and the union upsets it.
_T
Your Environment
mypy.ini
The text was updated successfully, but these errors were encountered:
A slightly simpler example without @overload:
@overload
from typing import TypeVar _T = TypeVar("_T") def foo(key: str) -> str | None: return key def bar(key: str, default: _T) -> str | _T: return key def test(custom_var: str) -> str: return foo(custom_var) or bar("V", "D")
https://mypy-play.net/?mypy=latest&python=3.12&gist=0afee5cdbf09752bb5f6a5ee9f3e35f4
Sorry, something went wrong.
No branches or pull requests
Bug Report
https://mypy-play.net/?mypy=latest&python=3.12&gist=4d959cd7069a8495533bfeca1cd40729
Actual Behavior
Expected Behavior
This should type check without errors, since we have an
or
with a call that always returnsstr
.It works if I replace type variable with just
str
:but something about
_T
and the union upsets it.Your Environment
mypy.ini
(and other config files): noneThe text was updated successfully, but these errors were encountered: