Referencing name not defined yet allowed by mypy, yet error at runtime.
Offen
Dieses Issue hat noch niemand übernommen.
bug
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
To Reproduce
from collections.abc import Callable
class A:
@staticmethod
def b(c: Callable[[], None]) -> Callable[[], None]:
return c
@A.b
@staticmethod
def c() -> None:
pass
Expected Behavior
Invoking mypy catches error.
Actual Behavior
Success: no issues found in 1 source file
However, at runtime:
NameError: name 'A' is not defined
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
Beginne mit dem Python-Reproducer im Issue und führe ihn mit strikten Einstellungen durch mypy aus. Vergleiche dann das von mypy akzeptierte Ergebnis mit Pythons Laufzeit-NameError. Verfolge die Verarbeitung von Dekoratorausdrücken und die Auflösung von Klassennamen, und füge einen Regressionstest hinzu, der zeigt, dass diese Referenz abgelehnt wird.
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