A wrapper class for generators and custom iterable classes that returns a new iterator to the start of the sequence when
If the wrapped object is a generator, a copy of the generator is constructed and returned when
IterWrapper.__iter__()is called. If the wrapped object is a custom type, then the
copy.copy()is called and a new instance is returned. In both cases, the original iterable object is unchanged.
Do not increment the wrapped iterable outside of this wrapper.
Parameters: wrapped (an iterable object) – Any iterable object that contains the __iter__ method.