python / python/mypy

(🐞) Bad error message when invoking an overload with a bad call

Offen
#13,343 0 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug topic-overloads
Vorherrschende Sprache
Python
Sterne
20.6k
Forks
3.3k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

This sample produces two error messages, the second is completely valid, but the first makes no sense.

from typing import overload

@overload
def foo(a: list[int]): ...
@overload
def foo(a: list[object]): ...
def foo(a): ...

foo(dict[str, list[object]]()[1])
# Argument 1 to "foo" has incompatible type "list[object]"; expected "list[int]"
# Invalid index type "int" for "dict[str, list[object]]"; expected type "str"

playground

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 mit dem bereitgestellten Reproduktionsbeispiel für overload und invalid-dictionary-index und verwende das verlinkte mypy-play-Beispiel, um beide Diagnosen zu beobachten. Verfolge, wie der overload-Aufruf und der ungültige Index gemeldet werden, und überprüfe anschließend, dass die erste Meldung nicht mehr irreführend ist, während der gültige Index-Typfehler bestehen bleibt. Füge einen Regressionstest hinzu oder aktualisiere ihn, falls während der Untersuchung die relevante Teststelle identifiziert wird.

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
40/100

Neue Issues direkt in Ihr Postfach

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