[Checkins] SVN: z3c.form/trunk/ avoid unnecessary runtime dependency on ZODB3

David Glick cvs-admin at zope.org
Tue Mar 20 03:19:44 UTC 2012


Log message for revision 124642:
  avoid unnecessary runtime dependency on ZODB3

Changed:
  U   z3c.form/trunk/CHANGES.txt
  U   z3c.form/trunk/setup.py
  U   z3c.form/trunk/src/z3c/form/datamanager.py

-=-
Modified: z3c.form/trunk/CHANGES.txt
===================================================================
--- z3c.form/trunk/CHANGES.txt	2012-03-19 07:39:54 UTC (rev 124641)
+++ z3c.form/trunk/CHANGES.txt	2012-03-20 03:19:39 UTC (rev 124642)
@@ -5,7 +5,7 @@
 2.6.2 (unreleased)
 ------------------
 
-- ...
+- Avoid dependency on ZODB3.
 
 2.6.1 (2012-01-30)
 ------------------

Modified: z3c.form/trunk/setup.py
===================================================================
--- z3c.form/trunk/setup.py	2012-03-19 07:39:54 UTC (rev 124641)
+++ z3c.form/trunk/setup.py	2012-03-20 03:19:39 UTC (rev 124642)
@@ -92,6 +92,7 @@
             'zope.app.publisher',
             'zope.app.testing',
             'zope.testing',
+            'ZODB3',
             ],
         zope34=[
             'zope.app.component',

Modified: z3c.form/trunk/src/z3c/form/datamanager.py
===================================================================
--- z3c.form/trunk/src/z3c/form/datamanager.py	2012-03-19 07:39:54 UTC (rev 124641)
+++ z3c.form/trunk/src/z3c/form/datamanager.py	2012-03-20 03:19:39 UTC (rev 124642)
@@ -20,8 +20,6 @@
 import zope.interface
 import zope.component
 import zope.schema
-import persistent.mapping
-import persistent.dict
 from zope.interface.common import mapping
 from zope.security.interfaces import ForbiddenAttribute
 from zope.security.checker import canAccess, canWrite, Proxy
@@ -30,6 +28,16 @@
 
 _marker = []
 
+ALLOWED_DATA_CLASSES = [dict]
+try:
+    import persistent.mapping
+    import persistent.dict
+    ALLOWED_DATA_CLASSES.append(persistent.mapping.PersistentMapping)
+    ALLOWED_DATA_CLASSES.append(persistent.dict.PersistentDict)
+except ImportError:
+    pass
+
+
 class DataManager(object):
     """Data manager base class."""
     zope.interface.implements(interfaces.IDataManager)
@@ -103,11 +111,7 @@
     zope.component.adapts(
         dict, zope.schema.interfaces.IField)
 
-    _allowed_data_classes = (
-        dict,
-        persistent.mapping.PersistentMapping,
-        persistent.dict.PersistentDict,
-        )
+    _allowed_data_classes = tuple(ALLOWED_DATA_CLASSES)
 
     def __init__(self, data, field):
         if (not isinstance(data, self._allowed_data_classes) and



More information about the checkins mailing list