False positive error "incompatible type"
Offen
Dieses Issue hat noch niemand übernommen.
bug
topic-inheritance
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
For this code:
from typing import Any, Generic, TypeVar
T = TypeVar('T')
class EtcdValueWatcherTyped(Generic[T]):
def __init__(self):
pass
class EtcdValueWatcher(EtcdValueWatcherTyped[dict[str, Any]]):
pass
class SettingsWatcher(EtcdValueWatcher):
def __init__(self, arg1: str):
self.__arg1 = arg1
EtcdValueWatcher.__init__(self)
def main():
watcher = SettingsWatcher('/v1/qwe')
mypy outputs error:
test.py: note: In member "__init__" of class "SettingsWatcher":
test.py:19: error: Argument 1 to "__init__" has incompatible type "SettingsWatcher"; expected "EtcdValueWatcherTyped[T]" [arg-type]
EtcdValueWatcher.__init__(self)
^
Found 1 error in 1 file (checked 1 source file)
which is false positive.
- Mypy version used:
mypy 0.971 (compiled: yes) - Mypy command-line flags:
mypy --config-file ./mypy.ini ./test.py - Mypy configuration options from
mypy.ini(and other config files):
[mypy]
ignore_missing_imports = True
show_error_codes = True
show_error_context = True
pretty = True
no_site_packages = False
- Python version used: Python 3.10.6
- Operating system and version: Fedora 35
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
Führen Sie den bereitgestellten Reproducer für Python 3.10 mit mypy 0.971 aus und bestätigen Sie den False Positive-Fehler [arg-type] beim expliziten Aufruf von EtcdValueWatcher.init. Untersuchen Sie die generische Vererbung und die Konstruktorprüfung im Type Checker und fügen Sie anschließend einen Regressionstest hinzu, der auf diesem Beispiel basiert. Als erledigt gilt die Aufgabe, wenn der gültige Aufruf keinen Fehler wegen inkompatibler Typen erzeugt.
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
- Ruhig
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100