'Enum programatic access for tuple value

I have following code:

class TupleEnum(Enum):
    def __new__(cls, first_value, second_value):
        obj = object.__new__(cls)
        obj._value_ = first_value
        obj._second_value = second_value

        return obj

    @DynamicClassAttribute
    def value(self):
        return self._value_

    @DynamicClassAttribute
    def second_value(self):
        return self._second_value


class ExampleEnum(TupleEnum):
    RED = "red", "Red"


ExampleEnum["RED"]
ExampleEnum(("red", "Red"))  # doesn't trigger error but I wanna use just `red` 
ExampleEnum("red")  # Causes error


I'd like to be able to access enum member by its value (which in my case is first element of the tuple)

How is it possible?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source