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)
note: Revealed type is "Type[builtins.object]" error: Too many arguments for "object"
This is on Python 3.8.10 and mypy 0.910.
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
Rework narrowing logic for equality and identity (python#20492)
Activity
AlexWaygood commented on Sep 22, 2022
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
Rework narrowing logic for equality and identity (python#20492)