[Twisted-Python] Re: can pb.Copyable objects be compared for equality after a round trip?

Robert Gravina robert at gravina.com
Mon Jun 26 11:55:11 MDT 2006


On 2006/06/27, at 1:56, David Bolen wrote:

> Robert Gravina <robert at gravina.com> writes:
>
>> Ah sorry everyone... it seems I've misunderstood a very basic  
>> concept:
>>
>> Copyables are copy-by-value
>> Referenceables are copy-by-reference
>>
>> It says so here:
>> http://www.lothar.com/tech/papers/PyCon-2003/pb-pycon/pb.html
>>
>> So basically I need to use either Referenceable or Viewable! OK now I
>> can get back to work.
>
> Well, or just define your own comparison semantics in your copyable,
> as you might for any other object.  We use copyables all the time for
> precisely this pattern (return object remotely, edit it, re-use it in
> a subsequent call back to the server) and it works fine as long as you
> control the comparison and don't fall back to default Python rules,
> which for class instances is effectively just an id() comparison.
>

Thanks, that is exactly what I am trying to do (return object  
remotely, edit it, re-use it in a subsequent call back to the  
server). What kind of comparison do you do then? Do you compare all  
attributes? By the way, what is an id() comparison? As far as I know  
Python compares to see if the instances (i.e. memory locations) are  
equal.

> As it turns out, we do also embed an "_id" attribute within the
> objects (an auto-generated UUID) so we can detect collisions
> (two clients attempting to modify the same object), but for general
> comparison purposes outside of that collision check, we exclude the
> _id attribute.
>

I've been looking around trying to find some good code for generating  
IDs, but most snippets I can find are accompanied by post after post  
on how that generation technique may fail under certain conditions.

I've been using the ZODB, but for the live of me I can't seem to get  
anything out of the _p_oid attribute (supposedly the object ID, but  
it's always None!). This prompted me today to experiment with Axiom  
(thanks Divmod guys!) and I like what I see so far, but I'm having  
problems with that also (see here if you're interested <http:// 
divmod.org/trac/ticket/1220>).

I'd really like to stick with Copyables and the ZODB if possible.  
What I'm not sure how to do is when I get my copyable back, not screw  
up my references to this object in the ZODB because what I'm really  
getting back is a whole new object.

Thanks for your advice,

Robert

> -- David
>
>
> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python





More information about the Twisted-Python mailing list