-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Open
Labels
bugmypy got something wrongmypy got something wrong
Description
Bug Report
The following code type-checked with mypy 1.16.1
in --strict
mode but does not type-check with mypy 1.17
and the master branch (currently eb07c06) in --strict
mode. Bisecting points to the commit 33d1eed.
Note that the problem does not occur if --strict
mode is disabled.
To Reproduce
import inspect
import typing
from typing import Any, ClassVar
def is_classvar(cls: type, scope: dict[Any, type]) -> bool:
ann = inspect.get_annotations(cls, eval_str=True, locals=scope).get("kind")
if ann is None:
raise Exception("Should be annotated.")
return typing.get_origin(ann) is not ClassVar
Actual Behavior
mypy --strict test_any.py
test_any.py:9: error: Non-overlapping identity check (left operand type: "ParamSpec", right operand type: "<typing special form>") [comparison-overlap]
Found 1 error in 1 file (checked 1 source file)
Your Environment
- Mypy version used:
mypy 1.17
andmaster
(bad),mypy 1.16.1
(good) - Mypy command-line flags:
--strict
- Mypy configuration options from
mypy.ini
(and other config files): - Python version used:
3.13
Note that reveal_type(ann)
gives Any | None
and that annotating ann: Any | None
solves the problem.
Metadata
Metadata
Assignees
Labels
bugmypy got something wrongmypy got something wrong