"""Generator for API"""

class GeneratorAPI:
    def __init__(self, data):
        self.data = data
        self.index = 0
    
    def __iter__(self):
        return self
    
    def __next__(self):
        if self.index >= len(self.data):
            raise StopIteration
        value = self.data[self.index]
        self.index += 1
        return value

    def reverse(self):
        for item in reversed(self.data):
            yield item

    def filter_by_condition(self, condition_func):
        for item in self.data:
            if condition_func(item):
                yield item

    def map_to_uppercase(self):
        for item in self.data:
            yield item.upper()