[Zodb-checkins] CVS: ZODB3/Persistence - PersistentList.py:1.3.96.1
PersistentMapping.py:1.20.96.1 __init__.py:1.4.88.3
TimeStamp.c:NONE cPersistence.c:NONE cPersistence.h:NONE
cPickleCache.c:NONE ring.c:NONE ring.h:NONE
Jim Fulton
cvs-admin at zope.org
Tue Oct 28 16:29:00 EST 2003
Update of /cvs-repository/ZODB3/Persistence
In directory cvs.zope.org:/tmp/cvs-serv9166/Persistence
Modified Files:
Tag: zodb33-devel-branch
PersistentList.py PersistentMapping.py __init__.py
Removed Files:
Tag: zodb33-devel-branch
TimeStamp.c cPersistence.c cPersistence.h cPickleCache.c
ring.c ring.h
Log Message:
Renamed the Persistence package to persistent.
The Persistence package is still there for backward compatability.
=== ZODB3/Persistence/PersistentList.py 1.3 => 1.3.96.1 ===
--- ZODB3/Persistence/PersistentList.py:1.3 Wed Aug 14 18:07:09 2002
+++ ZODB3/Persistence/PersistentList.py Tue Oct 28 16:28:28 2003
@@ -19,78 +19,14 @@
__version__='$Revision$'[11:-2]
import Persistence
-from UserList import UserList
+from persistent.list import PersistentList
-class PersistentList(UserList, Persistence.Persistent):
- __super_setitem = UserList.__setitem__
- __super_delitem = UserList.__delitem__
- __super_setslice = UserList.__setslice__
- __super_delslice = UserList.__delslice__
- __super_iadd = UserList.__iadd__
- __super_imul = UserList.__imul__
- __super_append = UserList.append
- __super_insert = UserList.insert
- __super_pop = UserList.pop
- __super_remove = UserList.remove
- __super_reverse = UserList.reverse
- __super_sort = UserList.sort
- __super_extend = UserList.extend
+class PersistentList(PersistentList, Persistence.Persistent):
+ """Legacy persistent list class
- def __setitem__(self, i, item):
- self.__super_setitem(i, item)
- self._p_changed = 1
+ This class mixes in ExtensionClass Base if it is present.
- def __delitem__(self, i):
- self.__super_delitem(i)
- self._p_changed = 1
+ Unless you actually want ExtensionClass semantics, use
+ persistent.list.PersistentList instead.
- def __setslice__(self, i, j, other):
- self.__super_setslice(i, j, other)
- self._p_changed = 1
-
- def __delslice__(self, i, j):
- self.__super_delslice(i, j)
- self._p_changed = 1
-
- def __iadd__(self, other):
- self.__super_iadd(other)
- self._p_changed = 1
-
- def __imul__(self, n):
- self.__super_imul(n)
- self._p_changed = 1
-
- def append(self, item):
- self.__super_append(item)
- self._p_changed = 1
-
- def insert(self, i, item):
- self.__super_insert(i, item)
- self._p_changed = 1
-
- def pop(self, i=-1):
- rtn = self.__super_pop(i)
- self._p_changed = 1
- return rtn
-
- def remove(self, item):
- self.__super_remove(item)
- self._p_changed = 1
-
- def reverse(self):
- self.__super_reverse()
- self._p_changed = 1
-
- def sort(self, *args):
- self.__super_sort(*args)
- self._p_changed = 1
-
- def extend(self, other):
- self.__super_extend(other)
- self._p_changed = 1
-
- # This works around a bug in Python 2.1.x (up to 2.1.2 at least) where the
- # __cmp__ bogusly raises a RuntimeError, and because this is an extension
- # class, none of the rich comparison stuff works anyway.
- def __cmp__(self, other):
- return cmp(self.data, self._UserList__cast(other))
+ """
=== ZODB3/Persistence/PersistentMapping.py 1.20 => 1.20.96.1 ===
--- ZODB3/Persistence/PersistentMapping.py:1.20 Wed Aug 14 18:07:09 2002
+++ ZODB3/Persistence/PersistentMapping.py Tue Oct 28 16:28:28 2003
@@ -19,88 +19,14 @@
__version__='$Revision$'[11:-2]
import Persistence
-from UserDict import UserDict
+from persistent.mapping import PersistentMapping
-class PersistentMapping(UserDict, Persistence.Persistent):
- """A persistent wrapper for mapping objects.
+class PersistentMapping(PersistentMapping, Persistence.Persistent):
+ """Legacy persistent mapping class
- This class allows wrapping of mapping objects so that object
- changes are registered. As a side effect, mapping objects may be
- subclassed.
+ This class mixes in ExtensionClass Base if it is present.
- A subclass of PersistentMapping or any code that adds new
- attributes should not create an attribute named _container. This
- is reserved for backwards compatibility reasons.
- """
-
- # UserDict provides all of the mapping behavior. The
- # PersistentMapping class is responsible marking the persistent
- # state as changed when a method actually changes the state. At
- # the mapping API evolves, we may need to add more methods here.
-
- __super_delitem = UserDict.__delitem__
- __super_setitem = UserDict.__setitem__
- __super_clear = UserDict.clear
- __super_update = UserDict.update
- __super_setdefault = UserDict.setdefault
-
- def __delitem__(self, key):
- self.__super_delitem(key)
- self._p_changed = 1
-
- def __setitem__(self, key, v):
- self.__super_setitem(key, v)
- self._p_changed = 1
-
- def clear(self):
- self.__super_clear()
- self._p_changed = 1
-
- def update(self, b):
- self.__super_update(b)
- self._p_changed = 1
+ Unless you actually want ExtensionClass semantics, use
+ persistent.mapping.PersistentMapping instead.
- def setdefault(self, key, failobj=None):
- # We could inline all of UserDict's implementation into the
- # method here, but I'd rather not depend at all on the
- # implementation in UserDict (simple as it is).
- if not self.has_key(key):
- self._p_changed = 1
- return self.__super_setdefault(key, failobj)
-
- try:
- __super_popitem = UserDict.popitem
- except AttributeError:
- pass
- else:
- def popitem(self):
- self._p_changed = 1
- return self.__super_popitem()
-
- # If the internal representation of PersistentMapping changes,
- # it causes compatibility problems for pickles generated by
- # different versions of the code. Compatibility works in both
- # directions, because an application may want to share a database
- # between applications using different versions of the code.
-
- # Effectively, the original rep is part of the "API." To provide
- # full compatibility, the getstate and setstate must read and
- # right objects using the old rep.
-
- # As a result, the PersistentMapping must save and restore the
- # actual internal dictionary using the name _container.
-
- def __getstate__(self):
- state = {}
- state.update(self.__dict__)
- state['_container'] = state['data']
- del state['data']
- return state
-
- def __setstate__(self, state):
- if state.has_key('_container'):
- self.data = state['_container']
- del state['_container']
- elif not state.has_key('data'):
- self.data = {}
- self.__dict__.update(state)
+ """
=== ZODB3/Persistence/__init__.py 1.4.88.2 => 1.4.88.3 ===
--- ZODB3/Persistence/__init__.py:1.4.88.2 Tue Jul 8 14:19:45 2003
+++ ZODB3/Persistence/__init__.py Tue Oct 28 16:28:28 2003
@@ -1,6 +1,6 @@
##############################################################################
#
-# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
+# Copyright (c) 2001, 2002, 2003 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
@@ -11,7 +11,43 @@
# FOR A PARTICULAR PURPOSE
#
##############################################################################
-"""Provide access to Persistent and PersistentMapping."""
+"""Persistence and ExtensionClass combined
-from cPersistence import Persistent
-from cPickleCache import PickleCache
+$Id$
+"""
+
+from persistent import Persistent, PickleCache
+
+try:
+ from ExtensionClass import Base
+except:
+ from warnings import warn
+ warn("""Couldn't import ExtensionClass
+
+ There are two possibilities:
+
+ 1. You don't care about ExtensionClass. You are importing
+ Persistence because that's what you imported in the past.
+ In this case, you should really use the persistent package
+ instead:
+
+ >>> from persistent import Persistent
+ >>> from persistent.list import PersistentList
+ >>> from persistent.mapping import PersistentMapping
+
+ 2. You want your classes you be ExtensionClasses. In thsi case,
+ you need to install the ExtensionClass package
+ separately. ExtensionClass is no-longer included with ZODB3.
+
+ """)
+ Base = object
+
+class Persistent(Persistent, Base):
+ """Legacy persistent class
+
+ This class mixes in ExtensionClass Base if it is present.
+
+ Unless you actually want ExtensionClass semantics, use
+ persistent.Persistent instead.
+
+ """
=== Removed File ZODB3/Persistence/TimeStamp.c ===
=== Removed File ZODB3/Persistence/cPersistence.c ===
=== Removed File ZODB3/Persistence/cPersistence.h ===
=== Removed File ZODB3/Persistence/cPickleCache.c ===
=== Removed File ZODB3/Persistence/ring.c ===
=== Removed File ZODB3/Persistence/ring.h ===
More information about the Zodb-checkins
mailing list