"""Generator for API"""

class GeneratorAPI:
    def __init__(self, data_source):
        self.data_source = data_source

    def generate(self, limit=None):
        for item in self.data_source:
            if limit is not None and len(item) >= limit:
                break
            yield item

    def filter_by_condition(self, condition):
        for item in self.data_source:
            if condition(item):
                yield item

    def map_transform(self, transform_func):
        for item in self.data_source:
            yield transform_func(item)

    def take(self, count):
        return [item for _, item in zip(range(count), self.generate())]

    def skip(self, count):
        return [item for _ in range(count)