[Zope3-checkins] CVS: Zope3/lib/python/ZODB - Connection.py:1.87 TmpStore.py:1.11 utils.py:1.15
Jeremy Hylton
jeremy@zope.com
Mon, 2 Dec 2002 15:22:38 -0500
Update of /cvs-repository/Zope3/lib/python/ZODB
In directory cvs.zope.org:/tmp/cvs-serv12174
Modified Files:
Connection.py TmpStore.py utils.py
Log Message:
Move Set class to utils and use 2.3 Set when possible.
Make sure that TmpStore always has an _created attribute. I found a
case where this wasn't true when debugging a different failure. No
time to write a separate test; I'd blow my stack.
=== Zope3/lib/python/ZODB/Connection.py 1.86 => 1.87 ===
--- Zope3/lib/python/ZODB/Connection.py:1.86 Tue Nov 26 12:41:21 2002
+++ Zope3/lib/python/ZODB/Connection.py Mon Dec 2 15:22:38 2002
@@ -50,7 +50,7 @@
from ZODB.POSException import ConflictError, RollbackError
from ZODB.Serialize import ConnectionObjectReader, \
getClassMetadata, ObjectWriter
-from ZODB.utils import u64
+from ZODB.utils import u64, Set
from Transaction import get_transaction
from Persistence.Cache import Cache
@@ -62,14 +62,6 @@
import time
from types import StringType, ClassType, TupleType
-class Set(dict):
- def add(self, o):
- self[o] = 1
-
- def addmany(self, L):
- for o in L:
- self[o] = 1
-
class Connection(ExportImport.ExportImport):
"""Object managers for individual object space.
@@ -328,8 +320,8 @@
self._storage.tpc_begin(txn)
# Copy invalidating and creating info from temporary storage:
- self._modified.addmany(tmp._index)
- self._created.addmany(tmp._created)
+ self._modified += Set(tmp._index)
+ self._created += tmp._created
for oid in tmp._index:
data, serial = tmp.load(oid, tmp._bver)
@@ -348,8 +340,7 @@
self._invalidate_created(tmp._created)
def _invalidate_created(self, created=None):
- """Dissown any objects newly saved in an uncommitted transaction.
- """
+ """Dis-own new objects from uncommitted transaction."""
if created is None:
created = self._created
self._created = Set()
=== Zope3/lib/python/ZODB/TmpStore.py 1.10 => 1.11 ===
--- Zope3/lib/python/ZODB/TmpStore.py:1.10 Thu Jul 25 16:56:56 2002
+++ Zope3/lib/python/ZODB/TmpStore.py Mon Dec 2 15:22:38 2002
@@ -12,7 +12,7 @@
#
##############################################################################
from ZODB import POSException
-from ZODB.utils import p64, u64
+from ZODB.utils import p64, u64, Set
import tempfile
@@ -33,6 +33,7 @@
self._index = {}
# _tindex: map oid to pos for new updates
self._tindex = {}
+ self._created = Set()
self._db = None
def close(self):
=== Zope3/lib/python/ZODB/utils.py 1.14 => 1.15 ===
--- Zope3/lib/python/ZODB/utils.py:1.14 Mon Nov 25 14:54:50 2002
+++ Zope3/lib/python/ZODB/utils.py Mon Dec 2 15:22:38 2002
@@ -36,3 +36,16 @@
break
write(d)
l = l - len(d)
+
+try:
+ from sets import Set
+except ImportError:
+ # This must be Python 2.2, which doesn't have a standard sets module.
+ # ZODB needs only a very limited subset of the Set API.
+ class Set(dict):
+ def add(self, o):
+ self[o] = 1
+ def __add__(self, other):
+ if not isinstance(other, Set):
+ return NotImplemented
+ self.update(other)