File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -32,18 +32,19 @@ extern "C"
3232{
3333 static PyObject* enum_repr (PyObject* self_)
3434 {
35+ const char *mod = PyString_AsString (PyObject_GetAttrString ( self_, " __module__" ));
3536 enum_object* self = downcast<enum_object>(self_);
3637 if (!self->name )
3738 {
38- return PyString_FromFormat (" %s(%ld)" , self_->ob_type ->tp_name , PyInt_AS_LONG (self_));
39+ return PyString_FromFormat (" %s.%s (%ld)" , mod , self_->ob_type ->tp_name , PyInt_AS_LONG (self_));
3940 }
4041 else
4142 {
4243 char * name = PyString_AsString (self->name );
4344 if (name == 0 )
4445 return 0 ;
4546
46- return PyString_FromFormat (" %s.%s" , self_->ob_type ->tp_name , name);
47+ return PyString_FromFormat (" %s.%s.%s " , mod , self_->ob_type ->tp_name , name);
4748 }
4849 }
4950
@@ -141,10 +142,9 @@ namespace
141142
142143 object module_name = module_prefix ();
143144 if (module_name)
144- module_name += ' . ' ;
145+ d[ " __module__ " ] = module_name ;
145146
146- object result = (object (metatype))(
147- module_name + name, make_tuple (base), d);
147+ object result = (object (metatype))(name, make_tuple (base), d);
148148
149149 scope ().attr (name) = result;
150150
Original file line number Diff line number Diff line change 4848enum_ext.color.green
4949'''
5050
51+ # pickling of enums only works with Python 2.3 or higher
52+ exercise_pickling = '''
53+ >>> import pickle
54+ >>> p = pickle.dumps(color.green, pickle.HIGHEST_PROTOCOL)
55+ >>> l = pickle.loads(p)
56+ >>> identity(l)
57+ enum_ext.color.green
58+ '''
59+
5160def run (args = None ):
5261 import sys
5362 import doctest
63+ import pickle
5464
5565 if args is not None :
5666 sys .argv = args
57- return doctest .testmod (sys .modules .get (__name__ ))
58-
67+ self = sys .modules .get (__name__ )
68+ if (hasattr (pickle , "HIGHEST_PROTOCOL" )):
69+ self .__doc__ += exercise_pickling
70+ return doctest .testmod (self )
71+
5972if __name__ == '__main__' :
6073 print "running..."
6174 import sys
You can’t perform that action at this time.
0 commit comments