'String representation for easier debugging.
Will call `__str__` on its source so this will display piped dataproviders.'

def __str__(self):

    source_str = (str(self.source) if hasattr(self, 'source') else '')
    return ('%s(%s)' % (self.__class__.__name__, str(source_str)))
