false positive "name not defined" with list comprehension in function arguments default value
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 20.6k
- Forks
- 3.3k
- Métriques de merge des PR
- Métriques de PR en attente
Description
- Are you reporting a bug, or opening a feature request?
This is a bug I believe
- Please insert below the code you are checking with mypy
def a():
pass
def b(
bb=[list_comprehension_argument for list_comprehension_argument in "abc"
if list_comprehension_argument]
):
pass
- What is the actual behavior/output?
mypy repro.py
repro.py:5: error: Name 'list_comprehension_argument' is not defined
repro.py:6: error: Name 'list_comprehension_argument' is not defined
Found 2 errors in 1 file (checked 1 source file)
- What is the behavior/output you expect?
I believe there should be no error reported.
- What are the versions of mypy and Python you are using?
Do you see the same issue after installing mypy from Git master?
this is on mypy from git master, mypy 0.790+dev.2b704df25ca299e6936927be8d41d2ab945cee2a
- What are the mypy flags you are using? (For example --strict-optional)
This is using the default flags.
This only seem to happens if there's another function like this one, before the function with list comprehension in arguments:
def a():
pass
When removing this other function or putting it after the one with list comprehension in argument, this false positive is not reported, I mean no error are reported for:
def b(
bb=[list_comprehension_argument for list_comprehension_argument in "abc"
if list_comprehension_argument]
):
pass
def a():
pass
or
def b(
bb=[list_comprehension_argument for list_comprehension_argument in "abc"
if list_comprehension_argument]
):
pass
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Reproduisez le rapport en exécutant mypy repro.py avec les variantes d’ordre des fonctions indiquées sur la version référencée de git-master. Suivez le traitement des valeurs par défaut des arguments de fonction et des portées des compréhensions de listes, puis ajoutez un test de régression couvrant les deux ordres ; le travail est terminé lorsqu’il n’y a plus d’erreurs de noms faussement positives et que la suite existante passe.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- devtools
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100