Index: libs/python/src/object/enum.cpp =================================================================== --- libs/python/src/object/enum.cpp (revisão 50782) +++ libs/python/src/object/enum.cpp (cópia de trabalho) @@ -185,8 +185,22 @@ (*this).attr(name_) = x; dict d = extract(this->attr("values"))(); - d[value] = x; - + if (d.has_key(value)) + { + extract checker(d[value]); + if (!checker.check()) + { + list v; + v.append(d[value]); + d[value] = v; + } + list result(d[value]); + result.append(x); + d[value] = tuple(result); + } + else + d[value] = x; + // Set the name field in the new enum instanec enum_object* p = downcast(x.ptr()); Py_XDECREF(p->name); @@ -198,10 +212,19 @@ dict d = extract(this->attr("values"))(); list values = d.values(); scope current; for (unsigned i = 0, max = len(values); i < max; ++i) { - api::setattr(current, object(values[i].attr("name")), values[i]); + extract checker(values[i]); + if (checker.check()) { + tuple t(checker()); + for (unsigned j = 0, maxj = len(t); j < maxj; ++j) + api::setattr(current, object(t[j].attr("name")), t[j]); + } + else + { + api::setattr(current, object(values[i].attr("name")), values[i]); + } } }