Checking elements of a `list[str | None]` after discarding the possibility of `None`
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 20.6k
- Forks
- 3.3k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
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
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza ejecutando el reproductor mínimo del issue con mypy 1.5.1 y, después, rastrea el comportamiento del estrechamiento de tipos para el acceso indexado a secuencias. Se considerará terminado cuando el ejemplo acepte el elemento cuyo tipo se ha estrechado sin la solución alternativa verbosa que usa una variable local, con una prueba de regresión que cubra el caso descrito.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- devtools
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 42/100