New submission from Guy Gangemi <guy.gang...@gmail.com>:

I'm proposing to extend enum.Flag member functionality so it is iterable in a 
manner similar to enum.Flag subclasses.

from enum import Flag, auto


class FlagIter(Flag):
    def __iter__(self):
        for memeber in self._member_map_.values():
            if member in self:
                yield member


class Colour(FlagIter):
    RED = auto()
    GREEN = auto()
    BLUE = auto()
    YELLOW = RED | GREEN

cyan = Colour.GREEN | Colour.Blue

print(*Colour)  # Colour.RED Colour.GREEN Colour.BLUE Colour.YELLOW

# Without the enhancement, 'not iterable' is thrown for these
print(*cyan)  # Colour.GREEN Colour.BLUE
print(*Colour.YELLOW)  # Colour.RED Colour.GREEN Colour.YELLOW
print(*~Colour.RED)  # Colour.GREEN Colour.BLUE

----------
messages: 307629
nosy: Guy Gangemi
priority: normal
severity: normal
status: open
title: add __iter__ to enum.Flag members
type: enhancement

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue32218>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to