@jtratner 

> right, but (x for x in range(10)) would fail.

Yes it would fail. The length is not passed to downstream iterators when chained. Thinking of it, may be it could for generator expressions, but that's a question for the python-dev list.