python / python/mypy

dmypy's `--use-fine-grained-cache` crashes with `KeyError` on namespace packages

Offen
#20,519 0 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

crash topic-daemon
Vorherrschende Sprache
Python
Sterne
20.6k
Forks
3.3k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

This is possibly related to #10735.

To Reproduce & Traceback

Create a minimal project as follows:

project/
  mypy.ini
      [mypy]
      files = src/
  src/
    pkg/
      __init__.py
      nspkg/
        mod.py
            a: int = ""

Reproduce with these steps:

  1. Navigate to project/
  2. $ mypy --cache-fine-grained
    src/pkg/nspkg/mod.py:1: error: Incompatible types in assignment (expression has type "str", variable has type "int")  [assignment]
    
  3. $ dmypy run -- --use-fine-grained-cache
    Daemon started
    Success: no issues found in 2 source files
    
    (I don't think this should say Success given the errors from Step 2., but that's a separate issue.)
  4. Change mod.py, e.g. modify the sole line to a: int = "a"
  5. Run the daemon twice:
    • $ dmypy run -- --use-fine-grained-cache
      src/pkg/nspkg/mod.py:1: error: Incompatible types in assignment (expression has type "str", variable has type "int")  [assignment]
      
    • $ dmypy run -- --use-fine-grained-cache
      Daemon crashed!
      Traceback (most recent call last):
        File ".../mypy/dmypy_server.py", line 237, in serve
          ...
        File ".../mypy/dmypy_server.py", line 768, in find_reachable_changed_modules
       worklist.append(BuildSource(graph[dep].path, graph[dep].id, followed=True))
                                   ~~~~~^^^^^
      KeyError: 'pkg.nspkg'
      

Your Environment

  • Mypy version used: 1.19.1
  • Python version used: Python 3.13

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Reproduziere den Namespace-Package-Fall mit dmypy und --use-fine-grained-cache und untersuche anschließend dmypy_server.py im Umfeld von find_reachable_changed_modules und Zeile 768, wo der Traceback in graph nach pkg.nspkg sucht. Verwende die aufgeführten Befehle, um zu überprüfen, dass der Daemon beim zweiten Lauf nicht mehr abstürzt und weiterhin den Zuweisungsfehler meldet.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
devtools
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.