Today I tried using dmypy for the first time and noticed a really strange bug: the second run produced different results than the first run!
More specifically (and even stranger) the error message "Final name must be initialized with a value" spreads from a known false positive (#5608) to other cases.
To Reproduce
I created a repository with complete repro: https://github.com/randolf-scholz/dmypy_bug
It seems 3 things are relevant:
- Using python 3.12.
(I believe this is because the 3.12 wheel of torch==2.4.0 ships with the py.typed marker, but the 3.11 wheel doesn't)
torch must be imported.
- A
dataclass using a Final annotation is defined.
minimal working example
__all__ = ["ImmutablePoint", "MyDataClass"]
from typing import Final
from dataclasses import dataclass
import torch
@dataclass
class MyDataClass:
foo: Final[int]
bar: Final[int]
class ImmutablePoint:
x: Final[int]
y: Final[int]
def __init__(self, x: int, y: int) -> None:
super().__init__()
self.x = x
self.y = y
Expected Behavior
Subsequent runs should yield the same results.
Actual Behavior
Subsequent spread the error from cases where it is expected to cases where it is not.
$ dmypy start
Daemon started
$ dmypy check src
src/dmypy_final_bug/__init__.py:10: error: Final name must be initialized with a value [misc]
src/dmypy_final_bug/__init__.py:11: error: Final name must be initialized with a value [misc]
Found 2 errors in 1 file (checked 1 source file)
$ dmypy check src
src/dmypy_final_bug/__init__.py:10: error: Final name must be initialized with a value [misc]
src/dmypy_final_bug/__init__.py:11: error: Final name must be initialized with a value [misc]
src/dmypy_final_bug/__init__.py:15: error: Final name must be initialized with a value [misc]
src/dmypy_final_bug/__init__.py:16: error: Final name must be initialized with a value [misc]
Found 4 errors in 1 file (checked 1 source file)
Your Environment
python==3.12.4
mypy==1.11.1
torch==2.4.0
Today I tried using dmypy for the first time and noticed a really strange bug: the second run produced different results than the first run!
More specifically (and even stranger) the error message "Final name must be initialized with a value" spreads from a known false positive (#5608) to other cases.
To Reproduce
I created a repository with complete repro: https://github.com/randolf-scholz/dmypy_bug
It seems 3 things are relevant:
(I believe this is because the 3.12 wheel of
torch==2.4.0ships with thepy.typedmarker, but the 3.11 wheel doesn't)torchmust be imported.dataclassusing aFinalannotation is defined.minimal working example
Expected Behavior
Subsequent runs should yield the same results.
Actual Behavior
Subsequent spread the error from cases where it is expected to cases where it is not.
Your Environment
python==3.12.4mypy==1.11.1torch==2.4.0