python / python/mypy

Some string `in` `Union[bytes, str]` does not produce an error

Abierto
#9,822 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

bug
Lenguaje dominante
Python
Estrellas
20.6k
Forks
3.3k
Métricas de merge de PR
Métricas de PR pendientes

Descripción

Given the following code

from typing import Union

foo: Union[str, bytes]  
"zoo" in foo  # no error
"zoo" + foo  # err: Unsupported operand types for + ("str" and "bytes")

I would have expected that mypy complains about str not compatible with bytes just like it does for the + operand.

I've tried the current typeshed version at 3d140160 because it just looked like there was a change here in Oct 2020 after mypy 0.790.

For example it now defines for class(str):

    def __contains__(self, o: Union[str, str]) -> bool: ...  # type: ignore
...
    def __iter__(self) -> Iterator[str]: ...

(__contains__ does not trigger here but its Union[str, str] is weird.)

Your Environment

mypy 0.790
python 3.8
builtin typeshed and @3d140160
Win 10

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Empieza reproduciendo el ejemplo Union[str, bytes] con mypy 0.790 y, a continuación, inspecciona las definiciones de typeshed para str.contains y el manejo relacionado de Union. Compara los diagnósticos para "zoo" in foo y "zoo" + foo; se considera terminado cuando la expresión de contención informa del caso incompatible str/bytes de forma coherente con la expresión de suma.

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
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.