durusmail: durus-users: snag with btree.get(key)
snag with btree.get(key)
2005-07-07
2005-07-07
2005-07-07
2005-07-08
2005-07-08
2005-07-08
2005-07-08
2005-07-08
2005-07-11
2005-07-08
2005-07-08
2005-07-08
2005-07-08
Schevo and moellus [was: Re: [Durus-users] snag with btree.get(key)]
2005-07-11
Re: Schevo and moellus [was: Re: [Durus-users] snag with btree.get(key)]
2005-07-13
2005-07-14
2005-07-14
2005-07-14
2005-07-13
2005-07-07
snag with btree.get(key)
Mario Ruggier
2005-07-08
On Jul 8, 2005, at 12:31 PM, David Binger wrote:

> If the other is an instance of Persistent with no _id
> attribute, I think this should really raise an exception.

I have modified it again since...

     def __cmp__(self, other):
         if self is other:
             return 0
         try:
             return cmp( (self._container.__class__.__name__, self._id),
                         (other._container.__class__.__name__,
other._id) )
         except AttributeError:
             return cmp(self._id, other)

Because, the id can be the same for different items in different
containers.

I am not really worried so much about raising the AttributeError... but
I am not sure in what contexts a p_item will be compared to arbitrarily
some other kind of object. It will certainly never happen during the
comparison of btree keys (in moellus)... I just lazily threw in that
last-ditch cmp, to not have to deal with it properly, for now (and, as
i said, i think this situation should not be pertinent to my
application).

Do you think that replacing the last-ditch comparison with:

             return cmp(self._id, str(other))

is a better idea? It would be stable at least...

> I think you should specify "except AttributeError"
> in cases like this.

Of course....

Thanks.


reply