Index: libs/python/src/object/enum.cpp =================================================================== --- libs/python/src/object/enum.cpp (revisão 51177) +++ libs/python/src/object/enum.cpp (cópia de trabalho) @@ -139,15 +139,16 @@ dict d; d["__slots__"] = tuple(); d["values"] = dict(); + d["names"] = dict(); object module_name = module_prefix(); if (module_name) @@ -186,23 +187,24 @@ dict d = extract(this->attr("values"))(); d[value] = x; // Set the name field in the new enum instanec enum_object* p = downcast(x.ptr()); Py_XDECREF(p->name); p->name = incref(name.ptr()); + + dict names_dict = extract(this->attr("names"))(); + names_dict[x.attr("name")] = value; } void enum_base::export_values() { - dict d = extract(this->attr("values"))(); - list values = d.values(); + dict d = extract(this->attr("names"))(); + list items = d.items(); scope current; - for (unsigned i = 0, max = len(values); i < max; ++i) - { - api::setattr(current, object(values[i].attr("name")), values[i]); - } + for (unsigned i = 0, max = len(items); i < max; ++i) + api::setattr(current, items[i][0], items[i][1]); } PyObject* enum_base::to_python(PyTypeObject* type_, long x)