Confusing error message: List item 0 has incompatible type "Type[Linear]"; expected "Type[Linear]"
Dieses Issue hat noch niemand übernommen.
- 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
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Ö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