On Apr 3, 2009, at 2:57 AM, Brian Sutherland wrote:

> Hi,
> We're using UUIDs a lot, and it's pretty painful that they are  
> security
> proxied. They're in the standard library from python 2.5
> (http://docs.python.org/library/uuid.html) and are immutable according
> to the documentation.

"According to the documentation" isn't good enough.

> I think they meet all the all the requirements to be rocks. So unless
> someone complains, I'll commit the attached patch in a few days.

 >>> u = uuid.UUID('{12345678-1234-5678-1234-567812345678}')
 >>> u.__dict__['int'] = 1
 >>> u

This isn't exactly immutable.  The protection system would prevent  
this sort of mutation, but I'm still nervous about a rock implemented  
in Python.  We have to be darn sure that there isn't some sort of loop  
hole here.  Really we have to do this with any rock and I'm not sure  
we have the formalisms necessary to guide this.

Oh wait:

 >>> del u.int
 >>> u
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
   File "/usr/local/python/2.5.1/lib/python2.5/uuid.py", line 192, in  
     return 'UUID(%r)' % str(self)
   File "/usr/local/python/2.5.1/lib/python2.5/uuid.py", line 198, in  
     hex = '%032x' % self.int
AttributeError: 'UUID' object has no attribute 'int'

Oops. This would not be prevented by the protection system. -1 for  
making uuids rocks.


Jim Fulton
Zope Corporation

Zope-Dev maillist  -  Zope-Dev@zope.org
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope )

Reply via email to