mypy icon indicating copy to clipboard operation
mypy copied to clipboard

cls (which is str) has revealed type of "Type[builtins.object]"

Open nickeldan opened this issue 3 years ago • 1 comments

In this example

def func(cls: type) -> typing.Any:
    if cls is str:
        reveal_type(cls)
        return cls(5)

mypy states

note: Revealed type is "builtins.type"

Makes sense. However, if I change it to

def func(cls: type) -> typing.Any:
    if issubclass(cls, int):
        pass
    elif cls is str:
        reveal_type(cls)
        return cls(5)

mypy states

note: Revealed type is "Type[builtins.object]" error: Too many arguments for "object"

This is on Python 3.8.10 and mypy 0.910.

nickeldan avatar Sep 21 '22 15:09 nickeldan

Mypy 0.910 is pretty old, but this reproduces on mypy 0.971 as well: https://mypy-play.net/?mypy=0.971&python=3.10&gist=06680dd02ef89d10ada867a731a1f618

AlexWaygood avatar Sep 22 '22 17:09 AlexWaygood