Skip to content

Namespace packages and __init__ imports #9716

Open

Description

@hauntsaninja

--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

Activity

  1. JukkaL commented on Nov 12, 2020

    @JukkaL
    Collaborator

    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.

  2. hauntsaninja commented on Nov 12, 2020

    @hauntsaninja
    CollaboratorAuthor

    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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugmypy got something wrong

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions