python / python/mypy

"Yield value expected" on generator using send()

Abierto
#10,997 3 comentarios 10 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

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

Descripción

Bug Report

mypy doesn't allow empty yield statements in generator functions that accept send() values

To Reproduce


from typing import Any, Generator


def foo() -> Generator[int, Any, None]:
    yield
    while True:
        yield 42

Expected Behavior

I expected the second parameter (Any) in Generator[int, Any, None] to indicate that this generator accepts a send() value and that therefore the naked yield statement is accepting a value but not sending one. As far as I know the above code is idiomatic.

Actual Behavior

error: Yield value expected

mypy complains that a yield value is expected, but this standalone yield is for the purpose of accepting the value of a send() to the generator.

Your Environment

mypy 0.812
python 3.7

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 ejecutando el ejemplo de Python proporcionado con mypy y confirma el diagnóstico “Yield value expected”. Traza cómo mypy comprueba las sentencias yield de los generadores y el tipo send de Generator; se considera terminado cuando un yield sin expresión se acepta en este caso y el ejemplo cuenta con cobertura de regresión.

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
4/5
Tiempo estimado
3-5 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.