mypy
mypy copied to clipboard
Dotted decorators on `TypedDict` classes fails for a certain package layout
Bug Report, To Reproduce, & Actual Behaviour
I'm hitting a strange error in data_structures.py with the following project structure, with a potential culprit in runtime_validation.py:
Project/
└── package/
├── __init__.py
├── data_structures.py
└── runtime_validation.py
- Contents of
data_structures.pyimport typing as tp import package.runtime_validation as _runtime_validation # from package.runtime_validation import register_runtime_validator # Uncomment to make errors disappear deco = _runtime_validation.register_runtime_validator # OK @_runtime_validation.register_runtime_validator # OK class A: ... @_runtime_validation.register_runtime_validator # E: Module has no attribute "register_runtime_validator" class TD(tp.TypedDict): ... - Contents of
__init__.pyimport typing as tp RUNTIME_VALIDATORS: tp.Final = ... from package.data_structures import TD - Contents of
runtime_validation.pyimport typing as tp from package import RUNTIME_VALIDATORS # Comment out to make errors in `data_structures.py` disappear def register_runtime_validator(Type: type[tp.Any], /) -> type[tp.Any]: ... return Type
Expected Behavior
No issues
Your Environment
- Mypy version used: 1.11.1
- Mypy command-line flags: None
- Mypy configuration options from
mypy.ini(and other config files): None - Python version used: 3.10.11