possibly-undefined not catching unbound variable in try/finally block
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug Report
The possibly-undefined check is not catching a possibly unbound variable when it's used within a finally block
To Reproduce
The following code raises NameError: name 'val' is not defined at runtime but passes he possibly-undefined check:
def foo() -> int:
raise Exception()
try:
val = foo()
except ValueError:
val = 1
finally:
print(val)
Your Environment
- Mypy version used:
1.10.0 - Mypy command-line flags: None
- Mypy configuration options from
mypy.ini(and other config files):
[tool.mypy]
enable_error_code = ["possibly-undefined", "redundant-expr", "truthy-bool"]
incremental = false
strict = true
warn_unreachable = true
- Python version used:
3.9.17
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
Es werden keine Repository-Dateien oder Tests genannt. Beginne damit, das bereitgestellte Python-Snippet mit mypy 1.10.0 und der gezeigten Konfiguration auszuführen, und verfolge dann die Analyse möglicherweise nicht definierter Werte für try/finally; abgeschlossen ist die Aufgabe, wenn die ungebundene Verwendung von val gemeldet wird und ein Regressionstest den Fall abdeckt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 42/100