from hypergol import Source

{%- for name in dependencies %}
from data_models.{{ name.asSnake }} import {{ name }}
{%- endfor %}


class {{ className }}(Source):

    def __init__(self, exampleParameter, *args, **kwargs):
        super({{ className }}, self).__init__(*args, **kwargs)
        # TODO: Source tasks are single threaded, no need for members to be pickle-able
        self.exampleParameter = exampleParameter

    def source_iterator(self):
        raise NotImplementedError(f'{self.__class__.__name__} must implement source_iterator()')
        # TODO: use yield in this function instead of return while your are consuming your source data
        yield exampleData

    def run(self, data):
        raise NotImplementedError(f'{self.__class__.__name__} must implement run()')
        return exampleOutputObject
