python / python/mypy

Various class based NamedTuple and TypedDict errors not caught

Offen
#6,200 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug priority-1-normal topic-named-tuple topic-typed-dict
Vorherrschende Sprache
Python
Sterne
20.6k
Forks
3.3k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

This example has a bunch of errors that the semantic analyzer should probably report (and one what seems like a false positive):

from typing import NamedTuple, TypeVar, Generic
from typing_extensions import Protocol
from mypy_extensions import TypedDict

@xyz  # No error
class N1(NamedTuple):
   x: int

@xyz  # No error
class T1(TypedDict):
    x: int

class N2(NamedTuple, Protocol):  # No error
   x: int

class T2(TypedDict, Protocol):  # No error
    x: int

class M(type):
    def f(cls) -> None: pass

class N3(NamedTuple, metaclass=M):  # No error
   x: int

N3.f()  # Error

class T3(TypedDict, metaclass=M):  # No error
    x: int

T = TypeVar('T')

class N4(NamedTuple, Generic[T]):  # No error
   x: int

class T4(TypedDict, Generic[T]):  # No error
   x: int

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, das Python-Beispiel zu reproduzieren und nachzuverfolgen, wie der semantische Analysator klassenbasierte NamedTuple- und TypedDict-Definitionen verarbeitet. Vergleiche die Diagnosen für Dekoratoren, Protocol- und Metaklassen-Basen sowie Generic-Kombinationen mit den Erwartungen im Issue, einschließlich des gemeldeten False Positive. Die Aufgabe ist abgeschlossen, wenn die fehlenden Fehler gemeldet werden und der False Positive behoben ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
compilers, devtools
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.