mypy reports no issues on access of conditionally available fields
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug Report
To Reproduce
# foo.py
def print_foo():
print(foo)
if __name__ == '__main__':
foo = "foobar"
https://mypy-play.net/?mypy=latest&python=3.12&gist=d8a24e474f61a151f549728e14173383
Expected Behavior
mypy should report an error
the name foo is not guaranteed to be part of the scope in print_foo. E.g. the following code will break
import foo
foo.print_foo()
Actual Behavior
mypy outputs "Success: no issues found in 1 source file"
Your Environment
see playground link
- Mypy version used: 1.15
- Mypy command-line flags: none (but happens with --strict also)
- Mypy configuration options from
mypy.ini(and other config files): - Python version used: 3.11, 3.12, 3.13
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 der minimalen foo.py-Reproduktion und führe sie über das verlinkte mypy playground für die gemeldeten Python-Versionen aus. Verfolge, wie mypy mit der bedingt definierten globalen Variable umgeht, auf die print_foo zugreift; abgeschlossen ist die Aufgabe, wenn für das Beispiel ein Fehler gemeldet wird und dabei die gültige Bereichsanalyse erhalten bleibt.
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
- Klar beschrieben
- Anfängerfreundlichkeit
- 45/100