How to annotate a generator in Python 3?

annotations, python, python-3.x

Solution

The typing module defines the Generator type, which you can use like:

Generator[yield_type, send_type, return_type] 

See also PEP 0484.

Problem

Python 3.x supports (optional) function annotations: ``` def add_ints(x:int, y:int) -> int : return x+y ``` I sometimes encounter problems as to how to represent a given "type" can be represented, and this time, I have a function that returns a generator: ``` def myfunc(x: [int]) -> "generator that returns ints": # ^~~~~~~~~~~~~~~~~~~~~~~~~~ return (n for n in x if n%2 == 0) ``` How should I annotate the return value? Is there any reference I can consult to?

Original source