python / python/mypy

Confusing error message: List item 0 has incompatible type "Type[Linear]"; expected "Type[Linear]"

Offen
#10,160 2 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug false-positive
Vorherrschende Sprache
Python
Sterne
20.6k
Forks
3.3k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Bug Report

In some situations, mypy can report that there was an incompatible type X, but then say that the expected type was also X. Regardless of whether or not the program is correct or not, this error message is bad.

To Reproduce

from typing import Any
        
class Linear:
    def __init__(self, **kwargs) -> None:
        pass

class QatLinear(Linear):
    def __init__(self, qconfig=None):
        pass

def f(x: Any):
    if type(x) in [Linear, QatLinear]:
        pass

Expected Behavior mypy gives me a good error message

Actual Behavior

(base) ezyang-mbp:~ ezyang$ mypy t.py
t.py:12: error: List item 0 has incompatible type "Type[Linear]"; expected "Type[Linear]"
Found 1 error in 1 file (checked 1 source file)

Your Environment

  • Mypy version used: mypy 0.780
  • Mypy command-line flags: none
  • Mypy configuration options from mypy.ini (and other config files): none
  • Python version used: Python 3.7
  • Operating system and version: OS X

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

Beginne damit, den bereitgestellten Python-Reproducer mit der gemeldeten mypy-Version oder einem aktuellen Checkout auszuführen, und verfolge dann den Pfad des Type-Checkers, der die Diagnose zur Inkompatibilität des Listenelements formatiert. Die Aufgabe ist abgeschlossen, wenn der reproduzierte Fall identisch angezeigte Typen nicht mehr als inkompatibel meldet und eine Regressionstestabdeckung für die Diagnose vorhanden ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

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

Neue Issues direkt in Ihr Postfach

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