python / python/mypy

Use analyzed type when resolving attributes via __getattr__

Offen
#5,345 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug priority-1-normal topic-import-cycles
Vorherrschende Sprache
Python
Sterne
20.6k
Forks
3.3k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Currently, there are several places in code where mypy uses .ret_type of __getattr__ function during semantic analysis to create a dummy Var if the attribute is missing. This can result in type being in unanalyzed state (UnboundType) in certain conditions (for example an import cycle) which then leaks to later stages where it can cause weird errors, and potentially even crashes.

This is especially important now, since __getattr__ can be used also outside stubs.

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

Beginnen Sie damit, die Pfade der semantischen Analyse zu ermitteln, die getattr's .ret_type verwenden, um ein Dummy-Var zu erstellen, wenn ein Attribut fehlt. Verfolgen Sie, wie ein UnboundType durch Importzyklen gelangen kann, und betrachten Sie das Issue als abgeschlossen, wenn der analysierte Typ verwendet wird und nicht analysierte Typen nicht mehr in spätere Phasen gelangen oder Abstürze verursachen.

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.