[Zope-Checkins] CVS: Zope3/lib/python/Zope/App/OFS/Memento -
AttributeMementoBag.py:1.1.2.3
Tres Seaver
tseaver@zope.com
Thu, 28 Mar 2002 19:13:30 -0500
Casey Duncan wrote:
> Update of /cvs-repository/Zope3/lib/python/Zope/App/OFS/Memento
> In directory cvs.zope.org:/tmp/cvs-serv18844
>
> Modified Files:
> Tag: Zope-3x-branch
> AttributeMementoBag.py
> Log Message:
> Refactored AttributeMementoBag to use IOBTrees instead of OOBTrees
>
>
> === Zope3/lib/python/Zope/App/OFS/Memento/AttributeMementoBag.py 1.1.2.2 => 1.1.2.3 ===
> """
>
> -from Persistence.BTrees.OOBTree import OOBTree
> +from Persistence.BTrees.IOBTree import IOBTree
> from IMementoBag import IMementoBag
>
> class AttributeMementoBag:
> @@ -28,8 +28,23 @@
> __implements__ = IMementoBag
>
> def __init__(self,obj):
> - if not hasattr(obj,'__memobag__'): obj.__memobag__ = OOBTree()
> + if not hasattr(obj,'__memobag__'): obj.__memobag__ = IOBTree()
> self.obj = obj
> +
> + def __getitem__(self, key):
> + try:
> + return self.obj.__memobag__[hash(key)]
> + except KeyError:
> + raise KeyError, key
> +
> + def get(self, key, default=None):
> + return self.obj.__memobag__.get(hash(key), default)
> +
> + def __setitem__(self, key, value):
> + self.obj.__memobag__[hash(key)] = value
>
> - def __getattr__(self,attr):
> - return getattr(self.obj.__memobag__,attr)
> + def __delitem__(self, key):
> + try:
> + del self.obj.__memobag__[hash(key)]
> + except KeyError:
> + raise KeyError, key
WAAAA! 'hash(key)' is *not* guaranteed to return unique values!
Tres.
--
===============================================================
Tres Seaver tseaver@zope.com
Zope Corporation "Zope Dealers" http://www.zope.com