[Checkins] SVN: ZODB/branches/tseaver-python_picklecache-2/src/persistent/ Use portable spelling for generating OIDs / serials from literals.

Tres Seaver tseaver at palladion.com
Wed Feb 16 11:26:32 EST 2011


Log message for revision 120390:
  Use portable spelling for generating OIDs / serials from literals.

Changed:
  U   ZODB/branches/tseaver-python_picklecache-2/src/persistent/pyPersistence.py
  U   ZODB/branches/tseaver-python_picklecache-2/src/persistent/tests/test_pyPersistence.py

-=-
Modified: ZODB/branches/tseaver-python_picklecache-2/src/persistent/pyPersistence.py
===================================================================
--- ZODB/branches/tseaver-python_picklecache-2/src/persistent/pyPersistence.py	2011-02-16 16:26:30 UTC (rev 120389)
+++ ZODB/branches/tseaver-python_picklecache-2/src/persistent/pyPersistence.py	2011-02-16 16:26:32 UTC (rev 120390)
@@ -26,13 +26,21 @@
 from persistent.interfaces import CHANGED
 from persistent.interfaces import STICKY
 
-if sys.version_info < (2.6,):
+if sys.version_info < (2, 6,):
     OID_TYPE = SERIAL_TYPE = str
 else:
     OID_TYPE = SERIAL_TYPE = bytes
 
-_INITIAL_SERIAL = '\x00' * 8
+def _makeOctets(s):
+    if sys.version_info < (2, 6,):
+        return str(s)
+    if sys.version_info < (3,):
+        return bytes(s)
+    return bytes(s, 'ascii')
 
+_INITIAL_SERIAL = _makeOctets('\x00' * 8)
+
+
 # Bitwise flags
 _CHANGED = 0x0001
 _STICKY = 0x0002

Modified: ZODB/branches/tseaver-python_picklecache-2/src/persistent/tests/test_pyPersistence.py
===================================================================
--- ZODB/branches/tseaver-python_picklecache-2/src/persistent/tests/test_pyPersistence.py	2011-02-16 16:26:30 UTC (rev 120389)
+++ ZODB/branches/tseaver-python_picklecache-2/src/persistent/tests/test_pyPersistence.py	2011-02-16 16:26:32 UTC (rev 120390)
@@ -46,7 +46,8 @@
         return _Jar()
 
     def _makeOneWithJar(self, klass=None):
-        OID = '\x01' * 8
+        from persistent.pyPersistence import _makeOctets
+        OID = _makeOctets('\x01' * 8)
         if klass is not None:
             inst = klass()
         else:
@@ -67,10 +68,11 @@
         verifyObject(IPersistent, self._makeOne())
 
     def test_ctor(self):
+        from persistent.pyPersistence import _INITIAL_SERIAL
         inst = self._makeOne()
         self.assertEqual(inst._p_jar, None)
         self.assertEqual(inst._p_oid, None)
-        self.assertEqual(inst._p_serial, '\x00' * 8)
+        self.assertEqual(inst._p_serial, _INITIAL_SERIAL)
         self.assertEqual(inst._p_changed, None)
         self.assertEqual(inst._p_sticky, False)
 
@@ -102,23 +104,26 @@
         self.assertRaises(ValueError, _test)
 
     def test_assign_p_oid_w_valid_oid(self):
-        OID = '1' * 8
+        from persistent.pyPersistence import _makeOctets
+        OID = _makeOctets('\x01' * 8)
         inst = self._makeOne()
         inst._p_oid = OID 
         self.assertEqual(inst._p_oid, OID)
         inst._p_oid = OID  # reassign only same OID
 
     def test_assign_p_oid_w_new_oid_wo_jar(self):
-        OID1 = '1' * 8
-        OID2 = '2' * 8
+        from persistent.pyPersistence import _makeOctets
+        OID1 = _makeOctets('\x01' * 8)
+        OID2 = _makeOctets('\x02' * 8)
         inst = self._makeOne()
         inst._p_oid = OID1
         inst._p_oid = OID2
         self.assertEqual(inst._p_oid, OID2)
 
     def test_assign_p_oid_w_new_oid_w_jar(self):
-        OID1 = '1' * 8
-        OID2 = '2' * 8
+        from persistent.pyPersistence import _makeOctets
+        OID1 = _makeOctets('\x01' * 8)
+        OID2 = _makeOctets('\x02' * 8)
         inst = self._makeOne()
         inst._p_oid = OID1
         inst._p_jar = self._makeJar()
@@ -127,13 +132,16 @@
         self.assertRaises(ValueError, _test)
 
     def test_delete_p_oid_wo_jar(self):
+        from persistent.pyPersistence import _makeOctets
+        OID = _makeOctets('\x01' * 8)
         inst = self._makeOne()
-        inst._p_oid = '\x01' * 8
+        inst._p_oid = OID
         del inst._p_oid
         self.assertEqual(inst._p_oid, None)
 
     def test_delete_p_oid_w_jar(self):
-        OID = '1' * 8
+        from persistent.pyPersistence import _makeOctets
+        OID = _makeOctets('\x01' * 8)
         inst = self._makeOne()
         inst._p_oid = OID
         inst._p_jar = self._makeJar()
@@ -160,20 +168,24 @@
         self.assertRaises(ValueError, _test)
 
     def test_assign_p_serial_w_valid_serial(self):
-        SERIAL = '1' * 8
+        from persistent.pyPersistence import _makeOctets
+        from persistent.pyPersistence import _INITIAL_SERIAL
+        SERIAL = _makeOctets('\x01' * 8)
         inst = self._makeOne()
         inst._p_serial = SERIAL 
         self.assertEqual(inst._p_serial, SERIAL)
         inst._p_serial = None
-        self.assertEqual(inst._p_serial, '\x00' * 8)
+        self.assertEqual(inst._p_serial, _INITIAL_SERIAL)
 
     def test_delete_p_serial(self):
-        SERIAL = '1' * 8
+        from persistent.pyPersistence import _makeOctets
+        from persistent.pyPersistence import _INITIAL_SERIAL
+        SERIAL = _makeOctets('\x01' * 8)
         inst = self._makeOne()
         inst._p_serial = SERIAL 
         self.assertEqual(inst._p_serial, SERIAL)
         del(inst._p_serial)
-        self.assertEqual(inst._p_serial, '\x00' * 8)
+        self.assertEqual(inst._p_serial, _INITIAL_SERIAL)
 
     def test_query_p_changed(self):
         inst = self._makeOne()
@@ -540,11 +552,13 @@
         self.assertEqual(jar._cache._mru, [OID])
 
     def test___setattr___p__names(self):
+        from persistent.pyPersistence import _makeOctets
+        SERIAL = _makeOctets('\x01' * 8)
         inst, jar, OID = self._makeOneWithJar()
         NAMES = [('_p_jar', jar),
                  ('_p_oid', OID),
                  ('_p_changed', False),
-                 ('_p_serial', '\x01' * 8),
+                 ('_p_serial', SERIAL),
                  ('_p_estimated_size', 0),
                  ('_p_sticky', False),
                 ]
@@ -691,11 +705,12 @@
         inst.__setstate__(()) # doesn't raise, but doesn't change anything
 
     def test___setstate___nonempty(self):
+        from persistent.pyPersistence import _INITIAL_SERIAL
         inst = self._makeOne()
         self.assertRaises(ValueError, inst.__setstate__, {'bogus': 1})
         self.assertEqual(inst._p_jar, None)
         self.assertEqual(inst._p_oid, None)
-        self.assertEqual(inst._p_serial, '\x00' * 8)
+        self.assertEqual(inst._p_serial, _INITIAL_SERIAL)
         self.assertEqual(inst._p_changed, None)
         self.assertEqual(inst._p_sticky, False)
 
@@ -984,10 +999,12 @@
         self.assertEqual(list(jar._cache._mru), [OID])
 
     def test__p_setattr_w__p__name(self):
+        from persistent.pyPersistence import _makeOctets
+        SERIAL = _makeOctets('\x01' * 8)
         inst, jar, OID = self._makeOneWithJar()
-        self.failUnless(inst._p_setattr('_p_serial', '1' * 8))
+        self.failUnless(inst._p_setattr('_p_serial', SERIAL))
         self.assertEqual(inst._p_status, 'ghost')
-        self.assertEqual(inst._p_serial, '1' * 8)
+        self.assertEqual(inst._p_serial, SERIAL)
         self.assertEqual(list(jar._loaded), [])
         self.assertEqual(list(jar._cache._mru), [])
 



More information about the checkins mailing list