On 22 April 2013 10:31, Barry Warsaw <ba...@python.org> wrote:

> On Apr 22, 2013, at 09:31 AM, Tim Delaney wrote:
>
> >I'm fine with iteration order being by sorted name by default, so long as
> >it's easily overrideable by enum subclasses or metaclasses e.g. an IntEnum
> >should probably iterate in value order.
>
> It does</timemachine>. :)


I knew it *did*, but wasn't sure if with the current discussion it was
going to continue to do so.


> >For definition order, a 3.x-only metaclass could be provided:
> >
> >class Days(enum.Enum, metaclass=enum.DefinitionOrder):
> >    Monday = 1
> >    Tuesday = 2
> >    Wednesday = 3
> >    Thursday = 4
> >    Friday = 5
> >    Saturday = 6
> >    Sunday = 7
>
> Yep, that's how it works.  From flufl.enum:
>
> class IntEnumMetaclass(EnumMetaclass):
>     # Define an iteration over the integer values instead of the attribute
>     # names.
>     def __iter__(cls):
>         for key in sorted(cls._enums):
>             yield getattr(cls, cls._enums[key])
>

Would it be worthwhile storing a sorted version of the enum keys here? Or
do you think the current space vs speed tradeoff is better?

I need to grab the current flufl.enum code and see if I can easily extend
it to do some more esoteric things that my enum implementation supports
(*not* bare names, but maybe the name = ... syntax, which of course
requires the definition order metaclass). I'm in the middle of a release
cycle, so my time is somewhat limited right now :(

Tim Delaney
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to