[Checkins] SVN: Products.BTreeFolder2/trunk/ Implement the full dictionary protocol including `__getitem__`, `__delitem__`, `__setitem__`, `__nonzero__`, `__iter__` and `__contains__`.
Hanno Schlichting
hannosch at hannosch.eu
Sun Jul 11 08:36:23 EDT 2010
Log message for revision 114587:
Implement the full dictionary protocol including `__getitem__`, `__delitem__`, `__setitem__`, `__nonzero__`, `__iter__` and `__contains__`.
Changed:
U Products.BTreeFolder2/trunk/CHANGES.txt
U Products.BTreeFolder2/trunk/src/Products/BTreeFolder2/BTreeFolder2.py
-=-
Modified: Products.BTreeFolder2/trunk/CHANGES.txt
===================================================================
--- Products.BTreeFolder2/trunk/CHANGES.txt 2010-07-11 12:27:54 UTC (rev 114586)
+++ Products.BTreeFolder2/trunk/CHANGES.txt 2010-07-11 12:36:23 UTC (rev 114587)
@@ -4,4 +4,7 @@
2.13.0 (unreleased)
-------------------
+- Implement the full dictionary protocol including `__getitem__`,
+ `__delitem__`, `__setitem__`, `__nonzero__`, `__iter__` and `__contains__`.
+
- Released as separate package.
Modified: Products.BTreeFolder2/trunk/src/Products/BTreeFolder2/BTreeFolder2.py
===================================================================
--- Products.BTreeFolder2/trunk/src/Products/BTreeFolder2/BTreeFolder2.py 2010-07-11 12:27:54 UTC (rev 114586)
+++ Products.BTreeFolder2/trunk/src/Products/BTreeFolder2/BTreeFolder2.py 2010-07-11 12:36:23 UTC (rev 114587)
@@ -311,6 +311,12 @@
"""Returns the number of items in the folder."""
return self._count()
+ def __len__(self):
+ return self.objectCount()
+
+ def __nonzero__(self):
+ return True
+
security.declareProtected(access_contents_information, 'has_key')
def has_key(self, id):
"""Indicates whether the folder has an item by ID.
@@ -339,6 +345,12 @@
else:
return set.keys()
+ def __contains__(self, name):
+ return name in self.objectIds()
+
+ def __iter__(self):
+ return iter(self.objectIds())
+
security.declareProtected(access_contents_information, 'objectValues')
def objectValues(self, spec=None):
# Returns a list of actual subobjects of the current object.
@@ -421,6 +433,9 @@
return id
+ def __setitem__(self, key, value):
+ return self._setObject(key, value)
+
def _delObject(self, id, dp=1, suppress_events=False):
ob = self._getOb(id)
@@ -435,8 +450,10 @@
notify(ObjectRemovedEvent(ob, self, id))
notifyContainerModified(self)
+ def __delitem__(self, name):
+ return self._delObject(id=name)
+
# Aliases for mapping-like access.
- __len__ = objectCount
keys = objectIds
values = objectValues
items = objectItems
@@ -448,6 +465,9 @@
def get(self, name, default=None):
return self._getOb(name, default)
+ def __getitem__(self, name):
+ return self._getOb(name)
+
# Utility for generating unique IDs.
security.declareProtected(access_contents_information, 'generateId')
More information about the checkins
mailing list