[openstack-dev] OK to Use Flufl.enum

Jay Pipes jaypipes at gmail.com
Tue Dec 10 16:43:39 UTC 2013


On 12/10/2013 11:26 AM, Alex Gaynor wrote:
>  >>> from flufl.enum import IntEnum
>  >>> class A(IntEnum):
> ...   a = 3
> ...
>  >>> A.a
> <EnumValue: A.a [value=3]>

If the __repr__ is *really* the only value of IntEnum, I'm less than 
impressed.

-jay

> On Tue, Dec 10, 2013 at 8:23 AM, Jay Pipes <jaypipes at gmail.com
> <mailto:jaypipes at gmail.com>> wrote:
>
>     On 12/10/2013 09:55 AM, Adam Young wrote:
>
>         On 12/10/2013 05:24 AM, Flavio Percoco wrote:
>
>             On 09/12/13 19:45 -0800, Alex Gaynor wrote:
>
>                 Would it make sense to use the `enum34` package, which
>                 is a backport
>                 of teh
>                 enum package from py3k?
>
>
>             +1
>
>             This is what we were using in Marconi.
>
>         So... they seem to be doing something different from Flufl, as
>         IntEnums
>         are not working the same way.  I wonder if it is just update
>         lag, and
>         Flufl is the Upstream for the changes.
>
>         With only a change to the import and requirements, it builds and
>         runs,
>         but raises:
>
>         Traceback (most recent call last):
>             File "keystone/tests/test_revoke.__py", line 65, in
>         test_list_is_sorted
>               valid_until=valid_until))
>             File "keystone/contrib/revoke/core.__py", line 74, in __init__
>               setattr(self, k, v)
>             File "keystone/contrib/revoke/core.__py", line 82, in scope_type
>               self._scope_type = ScopeType[value]
>             File
>         "/opt/stack/keystone/.venv/__lib/python2.7/site-packages/__enum/__init__.py",
>         line
>         352, in __getitem__
>               return cls._member_map_[name]
>         KeyError: 1
>
>         This seems to say that you cannot access an IntEnum as an
>         integer, which
>         just seems broken.
>
>
>     What precisely is the benefit of an IntEnum? From the example in the
>     flufl.enum docs:
>
>      >>> from flufl.enum import IntEnum
>      >>> class Animals(IntEnum):
>     ...     ant = 1
>     ...     bee = 2
>     ...     cat = 3
>
>      >>> int(Animals.bee)
>     2
>
>     Wow. That is so amazing. Thank goodness there is a library for that.
>
>     Oh wait... I can do exactly the same thing without flufl.enum or any
>     other library:
>
>      >>> class Animals:
>     ...     ant = 1
>     ...     bee = 2
>     ...     cat = 3
>     ...
>      >>> int(Animals.bee)
>     2
>
>     The IntEnum is my new definition of the most worthless class ever
>     invented in the Python ecosystem -- taking the place of
>     zope.interface on my personal wall of worthlessness.
>
>     Best,
>     -jay
>
>
>
>
>
>     _________________________________________________
>     OpenStack-dev mailing list
>     OpenStack-dev at lists.openstack.__org
>     <mailto:OpenStack-dev at lists.openstack.org>
>     http://lists.openstack.org/__cgi-bin/mailman/listinfo/__openstack-dev <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev>
>
>
>
>
> --
> "I disapprove of what you say, but I will defend to the death your right
> to say it." -- Evelyn Beatrice Hall (summarizing Voltaire)
> "The people's good is the highest law." -- Cicero
> GPG Key fingerprint: 125F 5C67 DFE9 4084
>
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>




More information about the OpenStack-dev mailing list