[Checkins] SVN: zope.security/trunk/ Replace assertions with appropriate errors in non-test code.

Tres Seaver cvs-admin at zope.org
Mon Dec 24 20:25:32 UTC 2012


Log message for revision 128902:
  Replace assertions with appropriate errors in non-test code.
  
  Also, expose the pure-Python checker class for testing.

Changed:
  _U  zope.security/trunk/
  U   zope.security/trunk/CHANGES.txt
  U   zope.security/trunk/src/zope/security/checker.py

-=-
Modified: zope.security/trunk/CHANGES.txt
===================================================================
--- zope.security/trunk/CHANGES.txt	2012-12-24 20:25:30 UTC (rev 128901)
+++ zope.security/trunk/CHANGES.txt	2012-12-24 20:25:31 UTC (rev 128902)
@@ -5,6 +5,10 @@
 4.0.0 (unreleased)
 ------------------
 
+- Converted use of ``assert`` in non-test code to apprpriate error types:
+
+  - Non-dict's passed to ``Checker.__init__``.
+
 - Removed dprecattion of ``zope.security.adapter.TrustedAdapterFactory``.
   Although it has been marked as deprectaed since before Zope3 3.2, current
   versions of ``zope.compoent`` still rely on it.

Modified: zope.security/trunk/src/zope/security/checker.py
===================================================================
--- zope.security/trunk/src/zope/security/checker.py	2012-12-24 20:25:30 UTC (rev 128901)
+++ zope.security/trunk/src/zope/security/checker.py	2012-12-24 20:25:31 UTC (rev 128902)
@@ -148,7 +148,7 @@
     return True
 
 @implementer(INameBasedChecker)
-class Checker(object):
+class CheckerPy(object):
 
     def __init__(self, get_permissions, set_permissions=None):
         """Create a checker
@@ -164,10 +164,12 @@
         set attribute access.
 
         """
-        assert isinstance(get_permissions, dict)
+        if not isinstance(get_permissions, dict):
+            raise TypeError('get_permissions must be a dict')
         self.get_permissions = get_permissions
         if set_permissions is not None:
-            assert isinstance(set_permissions, dict)
+            if not isinstance(set_permissions, dict):
+                raise TypeError('set_permissions must be a dict')
         self.set_permissions = set_permissions
 
     def permission_id(self, name):
@@ -231,9 +233,9 @@
                 return value
 
         return Proxy(value, checker)
+Checker = CheckerPy # in case no C optimizations
 
 
-
 # Helper class for __traceback_supplement__
 class TracebackSupplement(object):
 
@@ -291,7 +293,7 @@
 # Now we wrap it in a security proxy so that it retains it's
 # identity when it needs to be security proxied.
 d={}
-CheckerPublic = Proxy(CheckerPublic, Checker(d))
+CheckerPublic = Proxy(CheckerPublic, Checker(d)) # XXX uses CheckerPy
 d['__reduce__'] = CheckerPublic
 del d
 



More information about the checkins mailing list