mypy
mypy copied to clipboard
Namespace packages and __init__ imports
--namespace-packages
runs into an issue if we import from __init__.py
explicitly.
For instance, given:
.
└── proj
├── __init__.py
└── a.py
$ cat proj/__init__.py
x: int
$ cat proj/a.py
from .__init__ import x
$ cat proj/b.py
from proj.__init__ import x
running mypy will result in:
$ mypy proj --namespace-packages
proj/__init__.py: error: Source file found twice under different module names: 'proj' and 'proj.__init__'
This issue comes up at least twice in mypy_primer's corpus.
This is correct in that you do get two entries in sys.modules, but undesirable for this to block type checking
Wow, I didn't even know that from .__init__ import ...
is a thing. If it works at runtime and does something useful, we should probably try to support it.
Yeah, I wouldn't really care about it if not for the fact that "Source file found twice under different module names" is a blocking error and in this case it's really hard to figure out what's causing it. So kind of painful in the context of #9636