Checking elements of a `list[str | None]` after discarding the possibility of `None`
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
Bug Report
str_none: list[str | None]
only_str: list[str]
for i in range(len(sequence)):
if sequence[i] is not None:
only_str.append(sequence[i]) # Here mypy raises an error due to "incompatible types"
The code above raises the following error Argument 1 to "append" of "list" has incompatible type "str | None"; expected "str".
I've found the following verbose workaround but to my taste its :
str_none: list[str | None]
only_str: list[str]
for i in range(len(sequence)):
element = sequence[i]
if element is not None:
only_str.append(element)
To Reproduce
See code example above.
Expected Behavior
I'm expecting mypy to be able to predict future annotations of sequences with multiple types possible after discarding a specific type in a condition.
Actual Behavior
All is included above.
Your Environment
- Mypy version used: 1.5.1
- Mypy command-line flags: both
--strictand none - Mypy configuration options from
mypy.ini(and other config files): - Python version used: 3.11.5
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
Commencez par exécuter le reproducteur minimal de l’issue avec mypy 1.5.1, puis suivez le comportement de la réduction de type pour l’accès indexé aux séquences. Le travail sera terminé lorsque l’exemple acceptera l’élément dont le type a été réduit sans le contournement verbeux utilisant une variable locale, avec un test de régression couvrant le cas signalé.
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é
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 42/100