python / python/mypy

Mypy not reporting "undefined" variable.

Offen
#15,416 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug
Vorherrschende Sprache
Python
Sterne
20.6k
Forks
3.3k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Bug Report

When using a "undefined" variable, which will immediately crash the code when running it, mypy does not report anything about it. Is it normal ?

I feel like mypy should report it but maybe I am wrong because this isn't a typing error. On the other hand, this error is only possible because typing annotations exist . What do you think ?

To Reproduce

Dump this in a file main.py:

number: int
print(number)

Gist URL: https://gist.github.com/mypy-play/31d3775229a6fe01af6bbb09b9230a18
Playground URL: https://mypy-play.net/?mypy=latest&python=3.11&gist=31d3775229a6fe01af6bbb09b9230a18

Expected Behavior

An error message, maybe something like this.

main.py:2: error: Using an undefined variable, a value must be set before first.  [var-undefined]

Actual Behavior

$ mypy --strict main.py
Success: no issues found in 1 source file
python main.py
Traceback (most recent call last):
  File "/home/user/main.py", line 2, in <module>
    print(number)
          ^^^^^^
NameError: name 'number' is not defined

Your Environment

  • Mypy version used: 1.3.0
  • Mypy command-line flags: --strict
  • Mypy configuration options from mypy.ini (and other config files): nothing
  • Python version used: 3.11.3

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

Beginne damit, das Verhalten mit dem Beispiel main.py und mypy --strict main.py nachzustellen. Überprüfe, wie der Checker eine Variable behandelt, die nur annotiert ist, bevor du entscheidest, ob dieser Fall eine Diagnose wie [var-undefined] erhalten sollte. Die Aufgabe ist erledigt, wenn das Verhalten entweder durch einen geeigneten Test und eine Diagnose abgedeckt ist oder das erwartete Verhalten als nicht unterstützt dokumentiert wurde.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
devtools
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
42/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.