Skip to content

Mypy daemon + --namespace-packages mishandles deletion of __init__.py #11322

Open
@nipunn1313

Description

@nipunn1313

Bug Report

Run mypy with --namespace-packages flag.

If daemon is initially run with

p/__init__.py
p/a.py

Then delete p/__init__.py
We expect p to become a namespace package and p.a to be resolvable still. This does not happen.

The issue exists within the daemon update logic (update.py).
If we initialize the daemon with only

p/a.py

things work ok.

Issue was discovered via #11259 and #9636 for context

To Reproduce

In test-data/unit/fine-grained-modules.test, add to the first line of the following tests testDeletePackage4, testDeletePackage5, and testDeletePackage6

# flags: --namespace-packages

Can run the test with

source .tox/py37/bin/activate
pytest mypy/test/testfinegrained.py -k testDeletePackage4 -n0

Expected Behavior

for testDeletePackage4

  main:3: error: Argument 1 to "f" has incompatible type "int"; expected "str...
  ==
  main:3: error: Argument 1 to "f" has incompatible type "int"; expected "str...
  ==                                            (diff)
  main:2: error: Cannot find implementation or library stub for module named "p.a" (diff)
  main:2: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports (diff)
  main:2: error: Cannot find implementation or library stub for module named "p" (diff)

Actual Behavior

for testDeletePackage4

  main:3: error: Argument 1 to "f" has incompatible type "int"; expected "str...
  ==
  main:2: error: Import of "p.a" ignored        (diff)
  main:2: note: (Using --follow-imports=error, module not passed on command line) (diff)
  ==                                            (diff)
  main:2: error: Cannot find implementation or library stub for module named "p.a" (diff)
  main:2: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports (diff)
  main:2: error: Cannot find implementation or library stub for module named "p" (diff)

Ideally when fixing this task - we should convert the three aformentioned tests to use --namespace-packages

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions