python / python/mypy

Detect out-of-scope variable from a with-block

Offen
#8,842 4 Kommentare 3 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

feature needs discussion
Vorherrschende Sprache
Python
Sterne
20.6k
Forks
3.3k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Is it possible to have mypy detect the use of variables that have gone outside of their intended scope in a with-block?

with expr() as value:
    do_good_stuff(value)

do_bad_stuff(value)

value is still defined at this point, but has been cleaned up at the end of the with-block. I'd like to be able to detect such uses.

It feels like a typing error, as value isn't really the same type after the with-block (okay, I guess technically it is, but it isn't usable as the same type anymore).

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

Das Issue nennt keine Dateien, Tests oder Einstiegspunkte. Beginne damit, mypy's Behandlung von with-Block-Scopes und der Typprüfung zu finden, definiere dann das Diagnoseverhalten für eine Variable, die nach der Bereinigung verwendet wird, und füge Testabdeckung hinzu, die zeigt, dass die Verwendung innerhalb des Blocks weiterhin gültig ist, während die spätere Verwendung gemeldet wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
compilers
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

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