> 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