[Checkins] SVN: zope.component/branches/3.9/src/zope/component/ Merge trunk at 127412. Don't pickle registry flattened bases in the 'ro' attribute.
Ross Patterson
cvs-admin at zope.org
Wed Aug 1 04:37:28 UTC 2012
Log message for revision 127416:
Merge trunk at 127412. Don't pickle registry flattened bases in the 'ro' attribute.
Changed:
U zope.component/branches/3.9/src/zope/component/persistentregistry.py
U zope.component/branches/3.9/src/zope/component/tests.py
-=-
Modified: zope.component/branches/3.9/src/zope/component/persistentregistry.py
===================================================================
--- zope.component/branches/3.9/src/zope/component/persistentregistry.py 2012-08-01 04:34:54 UTC (rev 127415)
+++ zope.component/branches/3.9/src/zope/component/persistentregistry.py 2012-08-01 04:37:24 UTC (rev 127416)
@@ -33,11 +33,14 @@
state = super(PersistentAdapterRegistry, self).__getstate__().copy()
for name in self._delegated:
state.pop(name, 0)
+ state.pop('ro', None)
return state
def __setstate__(self, state):
+ bases = state.pop('__bases__', ())
super(PersistentAdapterRegistry, self).__setstate__(state)
self._createLookup()
+ self.__bases__ = bases
self._v_lookup.changed(self)
Modified: zope.component/branches/3.9/src/zope/component/tests.py
===================================================================
--- zope.component/branches/3.9/src/zope/component/tests.py 2012-08-01 04:34:54 UTC (rev 127415)
+++ zope.component/branches/3.9/src/zope/component/tests.py 2012-08-01 04:37:24 UTC (rev 127416)
@@ -951,9 +951,18 @@
self.assertEqual(state['_provided'], {})
self.assertEqual(state['_adapters'], [])
self.assertEqual(state['_subscribers'], [])
- self.assertEqual(state['ro'], [registry] + list(bases))
+ self.assertNotIn('ro', state)
+ def test___setstate___rebuilds__ro(self):
+ from zope.component import globalSiteManager
+ bases = (globalSiteManager.adapters, globalSiteManager.utilities)
+ registry, jar, OID = self._makeOneWithJar(bases=bases)
+ state = registry.__getstate__()
+ registry.__setstate__(state)
+ self.assertEqual(registry.__bases__, bases)
+ self.assertEqual(registry.ro, [registry] + list(bases))
+
def test_multi_handler_unregistration():
"""
There was a bug where multiple handlers for the same required
More information about the checkins
mailing list