On Fri, Sep 24, 2010 at 11:09:58AM -0400, Jim Fulton wrote:
> I wasn't proposing to change anything. :) Breaking inheritance to avoid
> inheriting a bad cmp seems rather too tricky.  (I assume there isn't
> a default comparison in Python 3, although I haven't checked.)
> I suppose that the BTree implementation could check for object's
> bad comparison operator and fail if it sees it. (Details omitted. :)
> This obviously wouldn't happen in 3.10, but might be a fun project for
> someone in 3.11.

What would you think of adding

    def __lt__(self, other):
        if not isinstance(other, Persistent):
            raise ValueError('cannot compare Persistent with %s' % repr(other))
        if self._p_oid is None or other._p_oid is None:
            raise ValueError('cannot compare objects that have no persistent 
IDs yet; call connection.add()')
        return self._p_oid < other._p_oid

    # define __le__, __gt__, __ge__ in a similar way

to persistent.Persistent?

Marius Gedminas
The old political syllogism "something must be done: this is something:
therefore this will be done" appears to be at work here, in spades.

Attachment: signature.asc
Description: Digital signature

For more information about ZODB, see the ZODB Wiki:

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

Reply via email to