> TreeSets are essentially BTrees with only keys. This means that the
> members of a TreeSet must have a stable ordering. I suspect that that
> c's class does not define the comparison methods (such as __lt__)
> which means under Python 2 it falls back to the default ordering based
> on object id (Python 3 will raise a TypeError instead, avoiding this
> problem.) With ZODB an object's Python id (the memory address of the
> object) will change whenever it is reloaded, i.e. across restarts,
> after invalidation or removal from the cache.

Yes, I know that. But I have a __cmp__ function defined, based on an
object property that never changes. That should be enough, no?

> The _check() method only confirms that the BTree/TreeSets's internal
> data structure is consistent. It does not check every item. So it does
> not show an error in this case.

I see. I thought it did some order checking as well.


José Pedro Ferreira

Software Developer, Indico Project

+  '``'--- `+  CERN - European Organization for Nuclear Research
+ |CERN|  / +  1211 Geneve 23, Switzerland
+ ..__. \.  +  IT-UDS-AVC
+  \\___.\  +  Office: 513-1-005
+      /    +  Tel. +41227677159
For more information about ZODB, see the ZODB Wiki:

ZODB-Dev mailing list  -  ZODB-Dev@zope.org

Reply via email to