Anotación de tipo PEP 484 de Python para la expresión del generador

¿Cuál es la anotación de tipo correcta para una función que devuelve una expresión generadora ?

p.ej:

def foo(): return (x*x for x in range(10)) 

No puedo averiguar si esto es -> Iterator[int] , -> Iterable[int] , -> Generator[int, None, None] , o alguna otra cosa.

Si debería haber una, y preferiblemente solo una, obvia forma de hacerlo , entonces, ¿cuál es la obvia forma aquí?

Las tres formas mencionadas por usted en cuestión se enumeran como alternativas válidas en la documentación . La expresión del generador simplemente crea un generador que solo cede.

Cita 1:

Un generador genérico puede anotar un Generator[YieldType, SendType, ReturnType] .

Cita 2:

Si su generador solo generará valores, establezca SendType y ReturnType en None

Cita 3:

Alternativamente, anote que su generador tenga un tipo de retorno de Iterable[YieldType] o Iterator[YieldType] :