-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Closed
Labels
bugmypy got something wrongmypy got something wrongtopic-overloadstopic-self-typesTypes for selfTypes for self
Description
Bug Report
Self as return type annotation in overloads raises error.
To Reproduce
from typing import Generic, TypeVar, Any, overload, Literal, Self
T = TypeVar("T", bound=Any)
class MyMapping(Generic[T]):
@overload
def get(self, obj: Literal[None]) -> Self:
pass
@overload
def get(self, obj: Any) -> T:
pass
def get(self, obj: Any | None) -> T | Self:
return selfExpected Behavior
No error.
Actual Behavior
error: Overloaded function signatures 1 and 2 overlap with incompatible return typespyright doesn't raise an error.
Old-style Self approach works as expected:
from __future__ import annotations
from typing import Generic, TypeVar, Any, overload, Literal
T = TypeVar("T", bound=Any)
_Self = TypeVar("_Self", bound="MyMapping[Any]")
class MyMapping(Generic[T]):
@overload
def get(self: _Self, obj: Literal[None]) -> _Self:
pass
@overload
def get(self, obj: Any) -> T:
pass
def get(self, obj: Any | None) -> T | MyMapping[T]:
return selfYour Environment
- Mypy version used: 1.0.0
- Mypy command-line flags:
- Mypy configuration options from
mypy.ini(and other config files): - Python version used: 3.11
hauntsaninja
Metadata
Metadata
Assignees
Labels
bugmypy got something wrongmypy got something wrongtopic-overloadstopic-self-typesTypes for selfTypes for self