Use analyzed type when resolving attributes via __getattr__
Dieses Issue hat noch niemand übernommen.
- 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
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
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