':param source: the source that this iterator will loop over.
(Should implement the iterable interface and ideally have the
context manager interface as well)'

def __init__(self, source, **kwargs):

    self.source = self.validate_source(source)
