I only mentioned it since I noticed it. I actually use Python 3 so it isn't a problem for me, but sometimes I have to teach Python 2.7 and I wanted to cover enum because it is so much nicer and easier to debug than FOO = 1 etc.
However, the problem is that enum's function API doesn't play nicely with unicode literals. One solution is to use the class API instead: from __future__ import print_function from __future__ import unicode_literals import enum print(enum.version) class A(enum.Enum): b = 1 c = 2 print(A.b, A.c) On Wednesday, November 26, 2014 2:41:16 PM UTC, Chris Angelico wrote: > On Thu, Nov 27, 2014 at 1:05 AM, <fastmail.us> wrote: > > On Wed, Nov 26, 2014, at 06:29, Mark Summerfield wrote: > >> TypeError: type() argument 1 must be string, not unicode > > > > If this is a bug, maybe it is one in type() itself - I get the same > > error with type('X', (object,), dict(a=1)) > > I'd say that's a limitation, not a bug. A lot of stuff in Python 2 > depends on identifiers being ASCII-only byte strings, including - > apparently - parts of the core code. Suggestion: Switch to Python 3, > or if you can't do that, pass your identifiers through str(). When you > do eventually switch to Py3, that won't do anything, but in Py2, it'll > force them to be byte strings. As long as they are actually > ASCII-only, that'll solve your problem. > > ChrisA -- https://mail.python.org/mailman/listinfo/python-list