NamedTuple with dependent default values causes unexpected 'Name is not defined' errors
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 20.6k
- Fork
- 3.3k
- Metriche di merge delle PR
- Metriche PR in attesa
Descrizione
Hi there,
When there is a NamedTuple with a default value that depends on one or more other default values, followed by a default value that should resolve into a NameError, all preceding default values get the Name <variable> is not defined error as well.
E.g.
from typing import NamedTuple
class Example(NamedTuple):
a: int = 1
b: int = 2
c: int = a*b
d: int = does_not_exist*5
Causes:
scratch.py:6: error: Name 'a' is not defined
scratch.py:6: error: Name 'b' is not defined
scratch.py:7: error: Name 'does_not_exist' is not defined
If I comment out line 6, I do, however, get the expected result.
from typing import NamedTuple
class Example(NamedTuple):
a: int = 1
b: int = 2
# c: int = a*b
d: int = does_not_exist*5
scratch.py:7: error: Name 'does_not_exist' is not defined
This was tried on version 0.760.
$ mypy --version
mypy 0.760
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia riproducendo il problema dall’esempio di NamedTuple in scratch.py usando mypy 0.760, quindi esamina il percorso di controllo dei tipi di NamedTuple responsabile dei valori predefiniti. Confronta il caso del valore predefinito dipendente con la versione in cui c è commentato. Il lavoro è completato quando il nome non definito in d viene segnalato senza errori spurii per a, b o c.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- tooling
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 35/100