-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Closed
Labels
bugmypy got something wrongmypy got something wrong
Description
Bug Report
Consider the following Python snippet, saved as foo.pyi:
from typing import assert_type, overload, Hashable
class Foo: ...
class DataFrame:
@overload
def __getitem__(self, key: slice) -> DataFrame: ...
@overload
def __getitem__(self, key: Hashable) -> Foo: ...
df = DataFrame()
assert_type(df[1:], DataFrame)
assert_type(df[:2], DataFrame)Prior to the recent change to make slice generic in typeshed, mypy used to emit no errors on this snippet. However, mypy on the master branch emits the following errors:
foo.pyi:7: error: Overloaded function signatures 1 and 2 overlap with incompatible return types [overload-overlap]
foo.pyi:13: error: Expression is of type "Any", not "DataFrame" [assert-type]
foo.pyi:14: error: Expression is of type "Any", not "DataFrame" [assert-type]
The first error here seems reasonable to me, but it's unclear to me why mypy now infers Any as the result of the df subscriptions. This snippet is minimized from the sole new mypy_primer error reported in python/typeshed#11637 (comment).
To Reproduce
https://mypy-play.net/?mypy=master&python=3.12&gist=339ba7f72c9048770ce15d6dc75207a1
Your Environment
- Mypy version used: mypy 1.14.0+dev.2ebc690279c7e20ed8bec006787030c5ba57c40e (compiled: no)
randolf-scholz and brianschubert
Metadata
Metadata
Assignees
Labels
bugmypy got something wrongmypy got something wrong