Generator iterator with push back function
This is to expand on Austin Hastings comment.

According to Python Standard Library documentation,


  The intention of the protocol is that once an iterator’s next() method raises StopIteration, it will continue to do so on subsequent calls. Implementations that do not obey this property are deemed broken.


It means that once the underlying iterator raises StopIteration, your object shall not accept any more push backs.



I would call the list lookahead rather than pushed_back, but it is a matter of taste.



Otherwise, LGTM.