Constant vs variable as index for none-checking List[Optional[...]]
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
Can you explain to me why there is this difference between using a constant and a variable as index for none-checking here?
from typing import List, Optional
my_list: List[Optional[float]] = []
if my_list[0] is not None:
result_1: float = my_list[0] # no error
result_2: float = my_list[1] # error: Incompatible types in assignment (expression has type "Optional[float]", variable has type "float")
id_0 = 0
if my_list[id_0] is not None:
result_3: float = my_list[id_0] # error: Incompatible types in assignment (expression has type "Optional[float]", variable has type "float")
for i in range(10):
if my_list[i] is not None:
a: float = my_list[i] # error: Incompatible types in assignment (expression has type "Optional[float]", variable has type "float")
- Mypy version used:
0.8000.941 - Mypy command-line flags:
- Mypy configuration options from
mypy.ini(and other config files): - Python version used: python3.6
- Operating system and version: Ubuntu 18.04 in WSL2 (Windows 11)
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
L’issue ne mentionne aucun fichier ni test du dépôt. Reproduisez les exemples avec mypy 0.941, puis retracez le comportement du raffinement de type pour les expressions indexées de type List[Optional[float]]. Le travail est terminé lorsque le comportement différent des constantes, des variables et des indices de boucle est expliqué et, s’il est confirmé qu’il s’agit d’un bug, couvert par un regression test approprié.
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