[Zope-dev] uuid.UUID as a rock in zope.security

Brian Sutherland brian at vanguardistas.net
Fri Apr 3 02:57:57 EDT 2009


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.

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.

-- 
Brian Sutherland
-------------- next part --------------
Index: CHANGES.txt
===================================================================
--- CHANGES.txt	(revision 98805)
+++ CHANGES.txt	(working copy)
@@ -5,7 +5,8 @@
 3.6.4 (unreleased)
 ------------------
 
-- None so far.
+- Make uuid.UUID a rock, they are immutable and in the python standad library
+  from python 2.5.
 
 3.6.3 (2009-03-23)
 ------------------
Index: src/zope/security/checker.py
===================================================================
--- src/zope/security/checker.py	(revision 98805)
+++ src/zope/security/checker.py	(working copy)
@@ -624,6 +624,13 @@
     type(pytz.UTC): NoProxy,
 })
 
+try:
+    # NOTE: remove try/except when we depend on python2.5 and up. uuid in standard library from python 2.5.
+    from uuid import UUID
+    BasicTypes[UUID] = NoProxy
+except ImportError:
+    pass
+
 # Available for tests. Located here so it can be kept in sync with BasicTypes.
 BasicTypes_examples = {
     object: object(),
Index: src/zope/security/tests/test_standard_checkers.py
===================================================================
--- src/zope/security/tests/test_standard_checkers.py	(revision 98805)
+++ src/zope/security/tests/test_standard_checkers.py	(working copy)
@@ -424,6 +424,14 @@
     >>> from pytz import UTC
     >>> int(type(ProxyFactory(  UTC )) is type(UTC))
     1
+    
+    >>> try:
+    ...     # NOTE: remove try/except when we depend on python 2.5 and greater (uuid in standard library)
+    ...     from uuid import UUID
+    ...     int(type(ProxyFactory(  UUID('12345678123456781234567812345678') )) is UUID)
+    ... except ImportError:
+    ...     1
+    1
     """
 
 def test_iter_of_sequences():


More information about the Zope-Dev mailing list